C++拷贝构造和赋值重载
来源:互联网 发布:动平衡数据统计软件 编辑:程序博客网 时间:2024/05/09 23:32
代码:
#include<iostream>using namespace std;class A{public:A():m_a(0){cout << "use A()"<<endl;}A(const int _a):m_a(_a){cout << "use A(int a)"<<endl;}A(const A& _a):m_a(_a.m_a){cout << "use A(int a)"<<endl;}A& operator=(const A& _a){cout << "use operator="<<endl;return *this;}private:int m_a;};int main(){A a;A b(a);//调用拷贝构造函数A c;c = b;//调用赋值重载函数return 0;}
需要注意的是,赋值重载函数返回值要使用引用的形式,因为:
返回的*this是当前对象,返回引用可以直接将新赋值的对象引用传回去,但是如果不使用引用,而是这样:
A operator=(const A& _a){cout << "use operator="<<endl;return *this;}
由于返回的是个对象,所以会继续调用一次类的拷贝构造函数,导致不必要的过程,并且很可能会出现问题。
有引用的结果:
无引用的结果:
发现,多了一次拷贝构造。
参考:
http://blog.chinaunix.net/uid-25808509-id-354211.html
http://blog.sina.com.cn/s/blog_60e96a410100lni7.html
http://zhidao.baidu.com/link?url=Qkv1bAHg7rKXDCroWciALkVEaluNGz7vEc58E2_i5RgJbu5jvg2M9_kLGL_h3b226TfwT3ga86YM2Ruks7I6kK
0 0
- [C++]拷贝构造函数和赋值运算符重载
- 拷贝构造和赋值重载,移动拷贝,赋值拷贝
- C++拷贝构造和赋值重载
- c/c++ 构造函数、拷贝构造函数、析构函数和赋值运算符重载
- 浅谈c/c++中类的拷贝构造函数和重载赋值函数
- 【C++】拷贝构造函数和赋值函数
- 拷贝构造函数和重载"="赋值操作符
- 关于重载拷贝构造函数和赋值运算符
- 拷贝构造函数和赋值运算符重载
- C++ 拷贝构造和赋值运算符重载
- c++拷贝构造函数和赋值操作符重载
- 关于拷贝构造函数和重载赋值操作符
- 拷贝构造函数和赋值运算符重载
- 关于C++中的拷贝构造和赋值重载的理解
- 拷贝构造函数 和 赋值操作符重载
- 类的赋值运算符重载和拷贝构造函数
- 关于拷贝构造函数和重载赋值函数
- C++ 拷贝构造函数和重载赋值函数
- Android应用生态系统的控制
- HDOJ 3613 Best Reward
- 海量数据处理中的云计算课程设计PPT模版
- ExecutorService线程池
- 文本分类入门
- C++拷贝构造和赋值重载
- 爱心书屋信息管理系统
- 移码操作
- jsp页面分页
- USACO 2.1.2 Ordered Fractions(暴力)
- The X-Frame-Options response header
- 在子窗口中刷新父窗口 JAVASCRIPT
- 优秀的程序员和一般的程序员差别在哪?
- 外网客户端访问校园内网的服务器——socket连接