栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++运算符重载1-- <<,++,--,*,->

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++运算符重载1-- <<,++,--,*,->

基本概念 在 c++ 中,可以定义一个处理类的新运算符。这种定义很像一个普通的函数定义, 只是函数的名字由关键字 operator 及其紧跟的运算符组成。 差别仅此而已。它像 任何其他函数一样也是一个函数,当编译器遇到适当的模式时,就会调用这个函数。

该函数的名字是 operator@,其中@代表了被重载的运算符。

运算符重载与友元函数 友元函数是一个全局函数,和我们上例写的全局函数类似,只是友元函数可以访问 某个类私有数据。 案例 : 重载左移操作符 (<<), 使得 cout 可以输出对象。 可重载的运算符

自增自减(++/--)运算符重载 当编译器看到 ++a(前置 ++) ,它就调用 operator++(a), 当编译器看到 a++ (后置 ++ ),它就会去调 用 operator++(a,int) 其标准形式为 :

#include 

using namespace std;
class Data
{
    friend ostream& operator<<(ostream &out, Data &ob);
private:
    int a;
    int b;
public:
    Data()
    {
        cout<<"无参的构造函数"<a = a;
        //this->b = b;
    }
    void showData(void)
    {
        cout<<"a = "a +1
        b++;//this->b = this->b +1
        //后使用
        return *this;
    }
    //成员函数 重载后置++  ob1++  (先使用 后加)
    //编译器 默认识别 operator++(a,int) //但是a可以用this代替 从而化简 operator++(int)
    Data& operator++(int)//ob1++
    {
        //先使用(备份加之前的值)
        static Data old=*this;//指针解引用后,是这个对象

        //后加
        a++;
        b++;

        //返回备份值
        return old;
    }

    //重载前置--    --ob3
    //编译器 默认识别 operator++(a) //但是a可以用this代替 从而化简 operator--()
    Data& operator--()
    {
        //先减
        a--;
        b--;

        //后使用(返回)
        return *this;
    }

    //重载后--    ob4--
    //编译器 默认识别 operator++(a,int) //但是a可以用this代替 从而化简 operator++(int)
    Data& operator--(int)
    {
        //先使用
        static Data old=*this;//注意这里的static,必须要加,否则函数调用结束,就会释放,导致程序错误。

        //再减
        a--;
        b--;

        return old;
    }


};
//普通全局函数 作为类的友元 重载<<运算符
ostream& operator<<(ostream &out, Data &ob)
{
    out<<"a = "< 
指针运算符(*、->)重载 

设计一个智能指针解决new出来的堆区空间释放问题(局部空间结束后,借助析构函数释放空间)

#include 

using namespace std;
class Person
{
private:
    int num;
public:
    Person(int num):num(num)
    {
        //this->num = num;
        cout<<"有参构造num = "<
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号