欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c++基础视频笔记 5 符号重载

程序员文章站 2022-03-07 20:48:20
加号运算符重载原因:如果想让自定义数据类型 进行+运算,那么就需要重载 + 运算符使用:在成员函数 或者 全局函数里 重写一个+运算符的函数,函数名 operator+ () {} a+b即 operator+(a,b)左移运算符重载原因:想要cout << 直接对Person自定义数据类型 进行输出使用: 写到全局函数中 ostream& operator<< ( ostream & cout, Person & p1 ) {} ...

加号运算符重载

原因:如果想让自定义数据类型 进行+运算,那么就需要重载 + 运算符

使用:在成员函数 或者 全局函数里 重写一个+运算符的函数,函数名 operator+ () {} a+b即 operator+(a,b)

左移运算符重载

原因:想要cout << 直接对Person自定义数据类型 进行输出

使用:
 写到全局函数中 ostream& operator<< ( ostream & cout, Person & p1 ) {}
 如果要访问p1的私有成员,要加友元

前置后置++运算符重载

不同:前置返回引用,后置返回副本
使用:
 重载++运算符 前置operator++() 后置operator++(int)

智能指针重载->和*

智能指针:托管动态分配的对象,智能指针的析构函数释放对象

重载原因:让智能指针和普通person *一样使用->和星号

使用:
c++基础视频笔记 5 符号重载

赋值运算符重载

原因:系统默认给类提供 赋值运算符写法 是简单值拷贝,如果类中有指向堆区的指针,就可能出现深浅拷贝的问题

注意:赋值运算符是已构造的对象调用 ,A a = *a;调用的是拷贝构造

使用:链式编程return *this;

[]运算符重载

使用:返回数组元素的引用
int & operator[](int index)
return this->pAddress[index]

关系运算符重载

自定义数据类型不会内部作比较,所以要重载== !=

函数调用运算符重载

概念:() 即仿函数,像函数调用
c++基础视频笔记 5 符号重载
匿名对象调用仿函数
c++基础视频笔记 5 符号重载

不要重载&& 和 ||

原因:本身有短路特性,我们无法实现这种特性,不要重载

总结

c++基础视频笔记 5 符号重载
注意:重载 = 运算符要return *this;,重载"*" “+” "-"运算符要不能返回引用,原因见effective c++

本文地址:https://blog.csdn.net/qq_36459662/article/details/107279661