拷贝构造函数什么时候调用?
来源:互联网 发布:易云网络 西安 编辑:程序博客网 时间:2024/05/18 01:49
1.
类对象赋值
void test1()
{
Test t1(1,2);
Test t2(t1);
}
2.
void test2()
{
Test t1(1,2);
Test t2;
t2=t1;//调用的不是拷贝构造函数,调用的是=号操作符,也能够完成将t1的值给t2,但是不是调用t2的拷贝构造函数
}
3.
void func(Test t) Test t=test::t1//局部变量拷贝构造
{
cout<<”func begin…”<
#
//场景四
Test func2()
{
cout << “func2 begin…” << endl;
Test temp(10, 20); //调用temp的带参数构造函数
cout << “func2 end..” << endl;
return temp; // 有一个临时的匿名对象 = temp ,把temp的数据给到了临时的匿名对象, ,会调用这个临时匿名
//对象的拷贝构造函数, 将temp穿进去。
}
void test4()
{
cout << “test4 begin ” << endl;
func2();
//匿名对象在此被析构了, 如果一个临时的匿名对象,没有任何变量去接收它,编译器认为这个临时匿名对象没有用处。//编译器会立刻销毁这个临时的匿名对象cout << "test4 end" << endl;
}
5.
void test5()
{
cout << “test5 begin …” << endl;
Test t1 = func2();//如果有一个变量去接收这个临时的匿名对象, 编译器认为这个匿名对象转正了,就不会立刻给他销毁。
//t1 = 匿名的临时对象 为什么不会发生拷贝构造
// 此时的t1 去接收这个匿名的临时对象不是 重新创建一个t1 而是给这个匿名对象起个名字就叫t1
//一旦这个匿名对象有了自己的名字,编译器就不会立刻给这个匿名对象销毁了,
//就当普通局部变量处理了
cout << "test5 end..." << endl;//在此时析构的t1
}
6.
void test6()
{
cout << “test6 begin…” << endl;
Test t1; //调用t1的无参数构造函数
t1 = func2(); //调用的=号操作符 ,,t1 = 匿名对象。 调用了t1的=号操作符。
//此时匿名没有被转正,匿名没有自己的名字, 匿名对象这个内存没有自己的别名, 编译器就会立刻销毁。
cout << “test6 end…” << endl;
}
- 什么时候调用拷贝构造函数
- 拷贝构造函数什么时候调用?
- 拷贝构造函数什么时候调用?
- 拷贝构造函数什么时候调用?
- 什么时候会调用“拷贝构造函数”
- 什么时候调用复制构造函数(拷贝构造函数)
- C++什么时候调用拷贝构造函数和什么时候调用构造函数
- C++:拷贝构造函数在什么时候被调用?
- c++类拷贝构造什么时候被调用
- 什么时候会用到拷贝构造函数?
- 什么时候会用到拷贝构造函数?
- 什么时候会用到拷贝构造函数?
- 什么时候会用到拷贝构造函数?
- 什么时候会用到拷贝构造函数?
- 什么时候会用到拷贝构造函数?
- 什么时候会用到拷贝构造函数?
- 什么时候会用到拷贝构造函数?
- 什么时候会用到拷贝构造函数?
- 远程jvm监控
- 激活函数
- android studio快捷键
- Oracle中to_char()函数的用法(转)
- 《PL/SQL的HelloWorld》
- 拷贝构造函数什么时候调用?
- 一、初读java编程思想前四章
- 常用css样式
- 多维数组按照某个字段排序
- sql server 中,解决不能够重新对已有的表结构进行更改设置的问题
- 变量的隐藏与方法的覆盖
- Celery学习笔记(一)
- 查询数据库内不同表间相同字段不同类型,不同长度的所有字段
- maven+idea基本配置