• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++运算符重载

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一元运算符重载

一元运算符通常出现在它们所操作的对象的左边,但有时它们也可以作为后缀。

重载自增运算符

Test& operator ++ () {
    ++a;
    return *this;
}

Test operator ++ (int) {
    Test ret(a);
    a++;
    return ret;
}

在前置++中,我们返回的是引用。而在后置++中,我们创建临时变量,返回操作前的值。参数列表中包含的 int 没有实际作用。

重载[]运算符

class Arr {
    int a[256];
public:
    int& operator[] (int i) {
        return a[i%256];
    }
};

int main() {
    Arr a;
    a[256]=1;
    cout<<a[0];
}

二元运算符重载

最常见的应用场景就是加减乘除了。比如我们要实现向量的加法。通常我们在传参时,都会使用常量引用来提高效率并保证安全。

注意,类私有成员可以被类成员函数访问,不区分成员在哪个实例里。因此以下例子是合法的

class Point {
    int x,y;
public:
    Point(int x,int y): x(x),y(y) {};
    Point operator + (const Point& b) {
        return Point(x+b.x,y+b.y);
    }
    void print() {
        cout<<x<<","<<y<<endl;
    }
};

int main() {
    Point a(1,1),b(2,3);
    (a+b).print();
}

输入输出流运算符重载

输入输出的重载本是可以通过成员函数完成的,但这样无法将 cout 作为左操作数,为了符合习惯,我们使用友元函数来完成这个重载过程。

class Point {
    int x,y;
public:
    Point(int x,int y): x(x),y(y) {};
    friend ostream& operator<<(ostream &os,const Point &p) {
        os<<p.x<<","<<p.y;
        return os;
    }
};

int main() {
    Point a(1,1);
    cout<<a;
}

输入重载同理,不做赘述。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#中有关于:按 值 和 引用 传递参数 的理解发布时间:2022-07-13
下一篇:
用c.vim插件打造C/C++集成编辑器发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap