您的位置:首页 > 编程语言 > C语言/C++

C++ 运算符重载

2016-08-25 09:43 288 查看
C++运算符重载:(1)不能改变运算符的优先级;(2)不能改变运算符的结合型;(3)默认参数不能和重载的运算符一起使用;(4)不能改变运算符的操作数的个数;(5)不能创建新的运算符,只有已有运算符可以被重载;(6)运算符作用于C++内部提供的数据类型时,原来含义保持不变。C++ 运算符除了以下几个运算符,其余都能被重载成员选择 "."指向成员操作的指针  ".*"作用域 "::""sizeof"三目运算符 "?:"运算符重载有两种形式,分为重载为类的成员函数和类的友元函数,重载为友元函数时没有this指针,所以必须带参数,否则将出现编译错误。运算符重载为类的成员函数的语法为:
函数类型 operator 运算符(形参表)
{
函数体;
}
运算符重载为类的友元函数的语法为:
friend 函数类型 operator 运算符(形参表)
{
函数体;
} 
=   ->    ()   []  delete  new 只能重载为类的成员函数
//运算符重载实例#include <iostream>using namespace std;class A{public:A(){ real = imag = 0;}A(double r, double i){real = r;imag = i;}A operator + (const A &c);//重载为类的成员函数friend void print(const A &c); //友元函数private:double real;double imag;};inline A A::A + (const A &c) //定义为内联函数,代码复制,运算效率高{return complex(real + c.real, imag + c.imag);}void print(const A &c){if(c.imag < 0)cout<<c.real<<c.imag<<'i'<<endl;elsecout<<c.real<<'+'<<c.imag<<'i'<<endl;}int main(){A c1(2.0, 3.5), c2(6.7, 9.8), c3;c3 = c1 + c2;cout<<"c1 + c2 = ";print(c3); //友元函数不是成员函数,只能采用普通函数调用方式,不能通过类的对象调用return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: