运算符重载
来源:互联网 发布:淘宝拍卖和个人闲置 编辑:程序博客网 时间:2024/05/29 06:57
运算符重载
性质:
1 不能创建新的操作符。
2 双目操作符“::”、“.”、和“.*”不能重载。
3 c++的操作符都是有优先级和结合性的,重载操作符后,其优先级和结合性是不会改变的。
4 原先的操作符是单目的,重载也是单目形式的;原先操作符是双目的,重载也是双目的,这是不能改变的。
5 操作符的重载只能针对自定义类型。即,在操作符定义的参数表中,至少有一个参数必须是自定义类型。
6 忌意义相左。
常成员函数
成员函数的操作,如果只对对象进行读操作,则该成员函数可以设计为常(const )成员函数。设计为常成员函数的好处是,让使用者一目了然地知道该成员函数不会改变对象值。同时让类的实现者更方便地调试,因为在常成员函数中,任何改变对象值的操作,都将被编译器毫不留情地认定为错误。
举例:矢量类的加法
#include<iostream>using namespace std;class Point{private:int x, y;public://成员函数void set(int a, int b){ x=a, y=b; }//常成员函数void print()const{ cout<<"("<<x<<", "<<y<<")\n"; }//设置为友元函数以便访问私有成员friend Point operator+(const Point& a, const Point& b);//设置为友元函数以便访问私有成员friend Point add(const Point& a, const Point& b);};Point operator+(const Point& a, const Point& b){Point s;s.set(a.x+b.x, a.y+b.y);return s;}Point add(const Point& a, const Point& b){Point s;s.set(a.x+b.x, a.y+b.y);return s;}int main(){Point a, b;a.set(3,1);b.set(4,5);//方法一(a+b).print();//方法二operator+(a,b).print();//方法三add(a, b).print();return 0;}
0 0
- 运算符重载 [++,--,+,<<; &&,||(不可重载)]
- 重载之运算符重载
- 重载赋值运算符
- C++运算符重载
- 运算符重载
- 运算符重载总结
- 运算符重载例子
- 运算符重载
- 运算符重载
- 基础:运算符重载
- 运算符重载
- 运算符重载
- 重载赋值运算符
- C#运算符重载
- C++-运算符重载
- 重载赋值运算符
- 运算符重载
- 有关运算符重载
- iOS_(id)sender
- Uboot启动过程详解
- Android UI2
- 全新android Tab控件PagerSlidingTabStrip最简使用方法
- 开始写博客
- 运算符重载
- 对比传统关系型数据库,NoSQL有着非常显著的性能和扩展性优势,然而这些优点却建立在一些关键功能的丢失之上,比如事务、join等。那么在数据体积激增的当下,究竟哪个数据库才会适合你的场景
- 101到200间的素数及其个数
- Bitmap.createBitmap参数异常之java.lang.IllegalArgumentException: width and height must be > 0
- 多重继承
- Boost库问题:无法识别的外部符号……
- Intent知识小学习
- HDU 1272 小希的迷宫
- VS关闭CodeLens 功能