9.1 概述 int operator+(const A &x,int y){return x.getx(+y; int operator+(int y,A x){return x.getxO)+y; void main(void) 必须有关于类的对象 Aa(6), cout<"a+7="<<a+7<<"\n"; /调用int operator+(const A&,int) cout<<"8+a="<<8+a<<"n", /调用int operator+-(int,A) } 输出: a+7=13 8+a=14 7
7 9.1 概述 int operator+(const A &x, int y){ return x.getx()+y; } int operator+(int y, A x){ return x.getx()+y; } void main(void) { A a(6); cout<<"a+7="<<a+7<<"\n"; //调用int operator+(const A&, int) cout<<"8+a="<<8+a<<"\n"; //调用int operator+(int, A) } 输出: a+7=13 8+a=14 必须有关于类的对象
9.1概述 根据能否重载及重载的函数类型,可将运算符分为: 。不能重载的运算符: sizeof、.、.*、:、?: 。只能重载为普通函数成员的运算符: =、->、0、0 。不能重载为普通函数成员的运算符: new、delete 。其他运算符:都不能重载为静态函数成员,但可 以重载为普通函数成员和普通函数。 8
8 9.1 概述 根据能否重载及重载的函数类型,可将运算符分为: ) 不能重载的运算符: sizeof、. 、.*、::、? : ) 只能重载为普通函数成员的运算符: =、–>、()、[] ) 不能重载为普通函数成员的运算符: new、delete ) 其他运算符:都不能重载为静态函数成员,但可 以重载为普通函数成员和普通函数
9.1概述 运算符=、->、()和[不能重载为普通函数,没有普通 函数也就不能定义普通友元: int operator=(int,A); /错误,不能重载为普通函数 int operator()(A,int); 错误,不能重载为普通函数 int operator[1(A,int); /错误,不能重载为普通函数 class Af friend int operator=(int,A); 错误,不能定义为普通友元 friend int operatorO(A,int); /错误,不能定义为普通友元 friend int operator[](A,int); 错误,不能定义为普通友元 friend int operator+=(int,A); 正确 }; 9
9 9.1 概述 运算符=、–>、( )和[ ]不能重载为普通函数,没有普通 函数也就不能定义普通友元: int operator=(int, A); //错误,不能重载为普通函数 int operator( )(A, int); //错误,不能重载为普通函数 int operator[ ](A, int); //错误,不能重载为普通函数 class A{ friend int operator=(int,A); //错误,不能定义为普通友元 friend int operator()(A,int); //错误,不能定义为普通友元 friend int operator[](A,int); //错误,不能定义为普通友元 friend int operator += (int,A); //正确 };
9.1概述 运算符=、->、()和川也不能重载为静态函数成员,因 此,不能在类中声明或定义如下静态函数成员: class B{ static int operator+=(int,B);∥错误,不能定义为静态函数成员 static int operator=(int,B); /错误,不能定义为静态函数成员 static int operator()(B,int); /错误,不能定义为静态函数成员 static int operator[](B,int); ∥错误,不能定义为静态函数成员 static operator int(B); /错误,不能定义为静态函数成员 }; 10
10 9.1 概述 运算符=、–>、( )和[]也不能重载为静态函数成员,因 此,不能在类中声明或定义如下静态函数成员: class B{ static int operator+=(int, B); //错误,不能定义为静态函数成员 static int operator=(int, B); //错误,不能定义为静态函数成员 static int operator( )(B, int); //错误,不能定义为静态函数成员 static int operator[ ](B, int); //错误,不能定义为静态函数成员 static operator int(B); //错误,不能定义为静态函数成员 };
9.1概述 运算符重载约定:关于单个对象的运算 将运算符函数重载为普通函数(C函数)时, 参数中至少要有一个类或类的引用类型: int operator+(int,A); 正确 int operator+-(const A&,int);/正确 不能将重载运算符函数的参数类型定义为 对象指针(简单类型)或者对象数组类型; int operator+(A *int); /错误 int operator+(A[6],int); 1/错误 11
11 9.1 概述 运算符重载约定:关于单个对象的运算 )将运算符函数重载为普通函数(C函数)时, 参数中至少要有一个类或类的引用类型; int operator+(int, A); //正确 int operator+(const A&, int); //正确 )不能将重载运算符函数的参数类型定义为 对象指针(简单类型)或者对象数组类型; int operator+(A *, int); //错误 int operator+(A[6], int); //错误