霍州做网站,网站站点文件夹权限设置,wordpress分页跳转首页,网站官网建设一、笔记
1. 重载运算符基础知识
重载运算符进行的运算和普通数的加减运算不同之处在于重载运算符的操作数为一个一个自定义的对象#xff0c;所以相应的要对普通的运算符如-*%/的调用方法进行重写#xff0c;重载的本质还是函数调用
2. 重载运算符的语法
重载运算符的语…一、笔记
1. 重载运算符基础知识
重载运算符进行的运算和普通数的加减运算不同之处在于重载运算符的操作数为一个一个自定义的对象所以相应的要对普通的运算符如-*%/的调用方法进行重写重载的本质还是函数调用
2. 重载运算符的语法
重载运算符的语法如下 类名(这个类名是函数的返回值,ab的结果还是一个对象 operator-*/% ([类名 操作数1]类名 操作数2){具体重载实现}
!!!重载的实质函数调用 其中operator运算符 是要重载的运算符可以是任何有效的C运算符例如 , -, *, / 等。 3. 类成员函数重载运算符
类成员函数重载运算符是指定义在类中的成员函数用于重载运算符。在类成员函数重载运算符中至少有一个操作数必须是类对象的实例。
//类的成员函数重载运算符M operator-(M b){//因为调用的时候是a.operator-(M b),a调用这个函数所以传参只要传breturn M(this-name,this-age-b.age);}
4. 友元函数重载运算符
友元函数重载运算符是指定义在类外部的函数但是被声明为类的友元函数允许访问类的私有成员。友元函数重载运算符可以实现更灵活的操作。 重载运算符的调用方式
重载运算符可以通过两种方式进行调用
隐式调用直接使用运算符符号进行调用如 a b。显式调用通过函数名进行显式调用如 operator(a, b)。
#includeiostream
using namespace std;
#includestring
class M{
public://公有string name;int age;M(){}M(string name,int age):name(name),age(age){}void print(){coutname:ageendl;}//类的成员函数重载运算符M operator-(M b){//因为调用的时候是a.operator-(M b),a调用这个函数所以传参只要传breturn M(this-name,this-age-b.age);}
//友元函数
friend M operator(M a,M b);
};
//语法类名(这个类名是函数的返回值,ab的结果还是一个对象 operator-*/% (类名 操作数1类名 操作数2...类名操作数n){具体重载实现}
//!!!重载的实质函数调用
M operator(M a,M b){return M(a.nameb.name,a.ageb.age);}
int main(){
M a(小美,20);
M b(小明,19);
//1.1、重载函数的隐式调用“”这个运算符的重载函数隐式调用M cab;
cout1 友元函数运算符重载(传参个数等于操作数个数)endl;
cout1.1 重载的隐式调用(姓名字符串拼接年龄整型相加:;c.print();//1.2、重载函数的显式调用
cout1.2 重载的显示式调用(姓名字符串拼接年龄整型相加:;
M c1 operator(a,b);
c1.print();
//2.1隐式调用
M da-b;
M d1a.operator-(b);
cout成员函数重载减法运算符只有年龄减姓名不变:;
d.print();
d1.print();
}
二、运行结果