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;}
相关文章推荐
- 王老师 C++ 运算符重载 转换函数 第一讲
- [C++学习]矩阵运算符重载
- [转] C++ 运算符重载 转换函数
- C++中运算符重载
- 第八章 C++函数的高级特性(8.3 参数的缺省值 8.4 运算符重载 8.5 函数内联)
- c++ 运算符重载
- C++ 中的运算符重载
- C++编程实例-运算符重载
- C++学习摘要之七:运算符重载
- c++中的运算符重载
- C++-运算符重载
- C++的=运算符重载并非简单内存拷贝
- C++中运算符重载实例
- 老陈学 C++ 序列之一: 运算符重载
- 浅谈C++中运算符重载
- 王老师 C++ 运算符重载 转换函数 第三讲
- C++对象的++,--运算符重载 374-39
- c++中运算符重载遇到的问题
- C++ 运算符重载 一个例子
- C++的运算符重载