C++中拷贝(复制)构造函数和赋值运算符重载函数
来源:互联网 发布:学生体质监测数据上报 编辑:程序博客网 时间:2024/05/18 21:49
C++中拷贝构造函数和赋值运算符重载函数何时调用?
先看下面的程序:
#include <iostream>using namespace std;class D{public:D(){cout<<"调用D的无参构造函数"<<endl;}D(const D &d){cout<<"调用D的拷贝构造函数"<<endl;}D & operator=(const D &d){cout<<"调用D的赋值运算符重载函数"<<endl;return *this;}virtual ~D(){cout<<"调用D的析构函数"<<endl;}};//这个辅助函数传进来的对象会复制一个副本,调用拷贝构造函数,返回时也会生成一个临时对象,调用拷贝构造函数,函数执行完成后还要调用两次析构函数D fun(D d){cout<<"辅助函数"<<endl;return d;}int main(){D d;//调用D的构造函数D dd = fun(d);}
输出结果:
调用D的无参构造函数调用D的拷贝构造函数辅助函数调用D的拷贝构造函数调用D的析构函数调用D的析构函数调用D的析构函数请按任意键继续. . .
再看下面的程序:
#include <iostream>using namespace std;class D{public:D(){cout<<"调用D的无参构造函数"<<endl;}D(const D &d){cout<<"调用D的拷贝构造函数"<<endl;}D & operator=(const D &d){cout<<"调用D的赋值运算符重载函数"<<endl;return *this;}virtual ~D(){cout<<"调用D的析构函数"<<endl;}};//这个辅助函数传进来的对象会复制一个副本,调用拷贝构造函数,返回时也会生成一个临时对象,调用拷贝构造函数,函数执行完成后还要调用两次析构函数D fun(D d){cout<<"辅助函数"<<endl;return d;}int main(){D d , dd;//调用D的构造函数dd = fun(d);}
输出结果:
调用D的无参构造函数调用D的无参构造函数调用D的拷贝构造函数辅助函数调用D的拷贝构造函数调用D的析构函数调用D的赋值运算符重载函数调用D的析构函数调用D的析构函数调用D的析构函数请按任意键继续. . .一句话总结:拷贝构造函数只用来初始化新对象,即还未初始化的对象。而赋值操作符只施行于已初始化的对象上。
0 0
- C++中拷贝(复制)构造函数和赋值运算符重载函数
- C++ 拷贝构造函数(即复制构造函数)和赋值运算符重载(有说赋值构造函数)区别
- [C++]拷贝构造函数和赋值运算符重载
- 【C++】复制构造函数(拷贝构造函数)和=运算符重载使用的区别
- c/c++ 构造函数、拷贝构造函数、析构函数和赋值运算符重载
- C++赋值运算符重载函数和拷贝构造函数
- C++ 复制构造函数和赋值运算符重载函数
- 拷贝构造函数/重载赋值运算符
- 关于重载拷贝构造函数和赋值运算符
- 拷贝构造函数和赋值运算符重载
- 拷贝构造函数和赋值运算符重载
- 类的赋值运算符重载和拷贝构造函数
- 禁用拷贝构造函数和重载赋值运算符
- 赋值运算符重载和拷贝构造函数
- 拷贝构造和赋值运算符函数的重载
- 复制构造函数和重载赋值运算符
- C++ 中的赋值运算符重载和复制构造函数
- C++之拷贝构造函数和复制运算符重载
- SlidingMenu 常用属性
- ios crash分析方法
- dependencies 和 dependencyManagement
- Hadoop简介(1):什么是Map/Reduce
- 利用tcpdump解决无法收到组播的问题
- C++中拷贝(复制)构造函数和赋值运算符重载函数
- Spark thriftserver连elasticsearch
- iOS 常见错误总结(1)
- treeview 的一点用法
- spring特性1-依赖注入
- 设计模式之单例(PHP实现)
- GCC安装
- 轻松搞定面试中的二叉树题目
- EasyUI Datagrid 用户列表鼠标悬停/离开数据行