博主主页:@ᰔᩚ. 一怀明月ꦿ
❤️专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++
座右铭:“不要等到什么都没有了,才下定决心去做”
大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点
目录
运算符重载的函数作为类的成员函数和友元函数
运算符重载定义为类的成员函数
运算符重载函数作为类的友元函数
实现“+”,“-“的普通重载函数和友元重载函数
单目运算符"++"和"--"的重载
运算符重载定义为类的成员函数
将运算符重载定义为类的成员函数的原型在内部声明格式:
class 类名 { ... 返回类型 operator 运算符(参数列表); ... };
在类外定义运算符重载函数的格式:
返回类型 类名::operator 运算符(参数列表) { ... }
运算符重载函数作为类的友元函数
将运算符重载函数作为类的友元函数。它与用成员函数重载运算符的函数的不同在于,成员函数重载运算符的函数本身是类中的成员函数,而友元函数是独立于类外的普通函数。
将运算符重载函数定义为类的友元函数,其原型在类的内部声明格式如下:
class 类名 { ... friend 返回类型 operator 运算符(参数列表); ... };
在类外定义友元运算符重载函数的格式:
返回类型 operator 运算符(参数列表) { ... }
与用成员函数定义的方法相比较,只是在类声明函数原型时前面多了一个关键字friend,表明这是一个友元运算符重载函数,只有声明为友元函数,才可以访问类的private成员;由于友元运算符重载函数不是该类的成员函数,所以在类外定义时不需要加上类名。
实现“+”,“-“的普通重载函数和友元重载函数
#include
using namespace std; class A { public: A(double x=0,double y=0):a(x),b(y) { ; } void show() { cout<<"运算后的结果为:"< 大家可能会疑惑,运算符重载函数可以是类的成员函数,也可以是类的友元函数,是否可以既不是类的成员函数也不是类的友元函数,其实是可以的,但是很少会用到,原因是普通函数不能直接访问类的私有成员,由于友元的使用会破坏类的封装,因此从原则上说,要尽量将运算符重载为成员函数。有时为了方便理解,一般将单目运算符重载为成员函数,将双目运算符重载为友元函数。但是也有例外,C++规定,有的运算符(赋值运算符,下标运算符,函数调用运算符)必须重载为类的成员函数,有的运算符则不能重载为类的成员函数(插入运算符"<<"和流提取运算符">>"、类型转化运算符)。
单目运算符"++"和"--"的重载
有两种形式:前置的++ --,后置的++ --
有两种方法:运算符重载的成员函数 运算符重载的友元函数
(1)运算符重载的成员函数:
(1)运算符重载的成员函数 #include
using namespace std; class A { public: A(int count=0):Count(count) { ; } void show() { cout<<"运算后结果为:"< (2)运算符重载的友元函数:
(1)运算符重载的成员函数 #include
using namespace std; class A { public: A(int count=0):Count(count) { ; } void show() { cout<<"运算后结果为:"<
如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家!