【C++基础 07】运算符重载
2014-08-03 00:55
621 查看
1.什么是运算符重载?
顾名思义,比如重载运算符 + - * / 等,改变这些符号原有的意义。C++提供了operator关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。
2.两种实现
运算符的重载实现有两种形式:(1)重载为类的成员函数
<函数返回类型> operator <运算符>(<形参表>) { <函数体>; }
(2)重载为类的友元函数
friend <函数返回类型> operator <运算符>(<形参表>) { <函数体>; }
3.示例
(1)重载为类的成员函数class Test { public: Test(void):a(0){}; ~Test(void){}; Test(int _a):a(_a){}; Test& operator + (Test& _test)//重载操作符,返回该类的一个实例 { int new_a=a+_test.a; Test new_Test(new_a); return new_Test; }; int a; }; void main() { Test t1(1),t2(2),t3; t3=t1+t2; std::cout<<t3.a; return ; }(2)重载为类的友元函数
class Test { public: Test(void):a(0){}; ~Test(void){}; Test(int _a):a(_a){}; friend Test& operator + (Test& _test1,Test& _test2)//重载为友元函数,因为友元函数不是类成员,所以需要传入2个参数 { int new_a=_test1.a+_test2.a; Test new_Test(new_a); return new_Test; }; int a; }; void main() { Test t1(1),t2(2),t3; t3=t1+t2; std::cout<<t3.a; return ; }
需要注意的是重载运算符的时候,返回最好是引用Test&而不是Test,原因如下:
(1)返回引用的话就是返回本身,返回值就是返回副本(相当于多调用一次copy构造函数,效率变慢)
(2)在连续操作时,会出现问题,比如说 (a = b) = c ,a = b 返回的是一个临时对象(副本),(a = b) = c 之后c就赋值不到a上了
相关文章推荐
- 【C++基础 07】运算符重载
- c++基础9:函数,函数重载和运算符重载
- c\c++ 复习基础要点07---内存存储 大端模式、小端模式
- [c++基础]运算符重载,共有数据保护,静态成员
- C++基础(六)在对象中使用运算符——运算符重载
- C++基础语法-02-运算符重载
- C++基础----运算符重载
- C++基础学习笔记:运算符重载
- C++基础知识复习--运算符重载(非成员函数重载和成员函数重载)
- 嵌入式开发之C++基础学习笔记5--静态成员,友元,运算符重载,模板,文件流
- C++语言基础 例程 运算符重载的方法
- 【C++基础】----运算符重载 (02)
- 【C++】类和对象--基础知识+四个默认成员函数+运算符重载
- C++基础5 运算符重载【提高】
- c++基础---C++之运算符重载
- C02-程序设计基础提高班(C++)第11周上机任务-运算符重载
- c++之运算符重载基础
- java基础改学C++(八)运算符重载
- C++学习6-面向对象编程基础(运算符重载、类的派生与继承、命名空间)
- C++基础::运算符重载