操作符重载
来源:互联网 发布:js中string转date 编辑:程序博客网 时间:2024/06/05 17:52
1、前置自加操作符重载:
#include<iostream>using namespace std;class A{public:int a;A(int x):a(x){}A operator++(){++a;return *this;}A(A& r){cout<<"调用复制构造函数"<<endl;a=r.a;}void print(){cout<<a<<endl;}};int main(){A d(5);A f=++d;f.print();A e=d;return 0;}
输出结果:
声明:第一次调用复制构造函数其实是一种优化,因为++操作符是按值返回,要调用复制构造函数,而=也要调用复制构造函数,但是其实只要有一个临时对象就可以,不必调用两次构造函数。
后置自加操作符重载:
#include<iostream>using namespace std;class A{public:int a;A(int x):a(x){}A operator++(int o){A temp(*this);++a;return temp;}A(A& r){cout<<"调用复制构造函数"<<endl;a=r.a;}void print(){cout<<a<<endl;}};int main(){A d(5);A f=d++;f.print();A e=d;return 0;}
加法操作符重载,赋值操作符重载。
#include<iostream>using namespace std;class A{public:int *a;A(int x){a=new int(x);cout<<"construct!"<<endl;}~A(){cout<<"disconstruct!"<<endl;delete a;}const A operator +(const A&b){return A(*b.a+*a);}const A &operator =(const A &b){*a=*(b.a);return *this;}void print(){cout<<*a<<endl;}};int main(){A D(4);A *E=new A(5);D=*E;delete E;D.print();return 0;}
- c++重载操作符
- C++ 操作符重载
- 操作符重载浅析
- 操作符重载
- 10.8 操作符重载
- 操作符重载
- 操作符重载手册
- C#操作符重载
- 操作符重载手册
- 操作符重载手册
- 六操作符重载
- 操作符的重载
- C#操作符重载
- 多态,操作符重载
- 操作符重载集锦
- 重载操作符
- 操作符重载
- 操作符重载手册
- 项目总结—从零开始(3)
- java中的内存泄露情况
- 面试技巧:16个经典面试问题回答思路
- Linux-PAM
- php的ereg_replace()函数使用总结(转)
- 操作符重载
- 依赖倒转原则
- 又搞了一次24点
- Ajax技术详解
- uilabel文字特效制作
- poj2503 简单的hash
- 网站访问错误
- About YAMAMOTO
- myeclipse 设置