c++基础视频笔记 5 符号重载
加号运算符重载
原因:如果想让自定义数据类型 进行+运算,那么就需要重载 + 运算符
使用:在成员函数 或者 全局函数里 重写一个+运算符的函数,函数名 operator+ () {}
a+b即 operator+(a,b)
左移运算符重载
原因:想要cout <<
直接对Person自定义数据类型 进行输出
使用:
写到全局函数中 ostream& operator<< ( ostream & cout, Person & p1 ) {}
如果要访问p1的私有成员,要加友元
前置后置++运算符重载
不同:前置返回引用,后置返回副本
使用:
重载++运算符 前置operator++()
后置operator++(int)
智能指针重载->和*
智能指针:托管动态分配的对象,智能指针的析构函数释放对象
重载原因:让智能指针和普通person *一样使用->和星号
使用:
赋值运算符重载
原因:系统默认给类提供 赋值运算符写法 是简单值拷贝,如果类中有指向堆区的指针,就可能出现深浅拷贝的问题
注意:赋值运算符是已构造的对象调用 ,A a = *a;
调用的是拷贝构造
使用:链式编程return *this;
[]运算符重载
使用:返回数组元素的引用
int & operator[](int index)
return this->pAddress[index]
关系运算符重载
自定义数据类型不会内部作比较,所以要重载== !=
函数调用运算符重载
概念:() 即仿函数,像函数调用
匿名对象调用仿函数
不要重载&& 和 ||
原因:本身有短路特性,我们无法实现这种特性,不要重载
总结
注意:重载 = 运算符要return *this;
,重载"*" “+” "-"运算符要不能返回引用,原因见effective c++
本文地址:https://blog.csdn.net/qq_36459662/article/details/107279661
上一篇: 9张图揭秘:优秀的数据分析项目,这样做