copy构造函数调用情况
来源:互联网 发布:网络机顶盒多少钱一个 编辑:程序博客网 时间:2024/06/05 09:57
很早知道拷贝构造函数被调用有三种情况:
1)类对象初始化该类的另一对象时;
2)形参为类对象的函数被调用时;
3)返回值为类对象的函数执行完成返回调用者时。
但今天才发现理解的和实际情况有偏差,并不是出现赋值运算符=就是调用的赋值操作运算符函数啊,比如这里的1),类对象初始化另一对象时是可以用拷贝构造函数形式,也可以利用赋值符号的形式啊,类似内置类型的初始化,用一个简单的类来验证了该事实。
#include <iostream>#include <string>using namespace std;int main(){ class Foo{ public: Foo() { myFun("This is from default constructor--Build-in type is not initialized!"); } Foo(const Foo& rhs) { this->a = rhs.a+1; this->s = rhs.s; myFun("This is from copy constructor"); } Foo& operator=(const Foo& rhs) { this->a = rhs.a+2; this->s = rhs.s; myFun("This is from =operator"); return *this; } Foo(int aa, string ss):a(aa),s(ss) { myFun("This is from constructor with Constructor Initializer List"); } ~Foo(){} void myFun(string str) { cout << a << ends << s << endl << str << endl; } private: int a; string s; }; Foo foo(3,"good"); Foo foo1;//初始化 Foo foo2=foo; Foo foo3(foo); foo1=foo;//这才是赋值 return 0;}运行结果:
从结果可以看出只有最后一句才是来自赋值运算符,其上两个来自拷贝构造函数。
阅读全文
0 0
- copy构造函数调用情况
- 拷贝构造函数调用的情况
- 讨论构造拷贝构造函数的N种调用情况
- copy构造函数的调用时机1和2
- 暑期C++之 copy构造函数调用时机
- copy构造函数的三种调用时机
- copy构造函数
- 禁用copy构造函数
- copy构造函数
- copy拷贝构造函数
- C++对象的拷贝构造函数 赋值函数 调用情况
- 构造函数拷贝赋值函数的N种调用情况
- 调用拷贝构造函数的三种情况
- C++拷贝构造函数被调用的三种情况
- 拷贝构造函数调用的几种情况(笔记)
- C++ 中拷贝构造函数被调用情况
- C++——构造函数的不同调用情况
- 调用拷贝构造函数的几种情况
- 查询数据库中指定字段符合条件的记录数
- 【期望】fzu 2278-- YYS
- PAT B1034. 有理数四则运算
- Slave_SQL_Running: No的解决办法
- SQLSERVER2008 (T-SQL汇总二)
- copy构造函数调用情况
- 关于极光推送,部分手机收不到的分析
- iOS设置主题颜色方便使用
- Qt按键 (自定义样式)
- 本地图片转base64格式上传到服务器(php)
- [NOIP2005][状压DP]过河
- 用C语言编写动态顺序表
- jdbc操作mysql数据库_接口简介
- SQLserver字段类型详解