博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于4种copy构造函数复习的代码示例
阅读量:4212 次
发布时间:2019-05-26

本文共 1401 字,大约阅读时间需要 4 分钟。

具体看代码和注释,如下:

#include 
using namespace std;void objplaymain71();class Test{public: Test() { a = 0; b = 0; cout << "无参数构造函数 自动被调用" << endl; } Test(int _a) //有参数构造函数 { a = _a; b = 0; } Test(const Test& obj) //copy构造函数 作用: 用一个对象初始化另外一个对象 { a = obj.a + 100; b = obj.b + 100; cout << "调用这个" << endl; } void printT() { cout << "a:" << a << "b: " << b << endl; } ~Test() { cout << "我是析构函数 对象生命周期结束时,会被c++编译器自动调用" << endl; }protected:private: int a; int b;};// 第3种调用时机void printTest(Test t){ ;}// 1 和 2 void objplaymain72(){ // Test t1(1); //ok Test t2(t1); //这个会调用copy构造函数 Test t3 = t1; //会调用copy构造函数 printTest(t1); //这个也会调用copy构造函数}//copy构造函数的第4种调用时机//返回一个元素 匿名对象Test getTestObj(){ Test t(1); return t;}void TestNoNameObj(){ Test myt1 = getTestObj(); //用匿名对象初始化 另外一个对象,相当于匿名对象改名,不会调用匿名对象的析构函数,特别注意这里,这里是不会调用匿名对象的拷贝构造函数的 Test myt2(1); myt2 = getTestObj(); //用匿名对象 给 另外一个对象 赋值 匿名对象被析构,注意这里也不会调用拷贝构造函数}void main(){ //objplaymain(); objplaymain72(); //TestNoNameObj(); cout << "hello..." << endl; system("pause");}void objplaymain71(){ Test t1; //ok //Test t2() ; //调用无参数构造函数的 错误方法 //t2.printT(); // Test t3(1); //c++编译器自动的调用构造函数 Test t4 = 4; //c++编译器自动的调用构造函数 Test t5 = Test(5); //程序员手工的调用构造函数 // Test t6 = t1; return;}/**当仅仅调用objplaymain72()这个,输出如下:调用这个调用这个调用这个我是析构函数对象的生命周期结束时,会被c++编译器自动调用我是析构函数对象的生命周期结束时,会被c++编译器自动调用我是析构函数对象的生命周期结束时,会被c++编译器自动调用我是析构函数对象的生命周期结束时,会被c++编译器自动调用hello*/

 

转载地址:http://vezmi.baihongyu.com/

你可能感兴趣的文章
在VBS中,SET的用法
查看>>
组策略合理限制VBS文件
查看>>
VBS不支持跨盘操作
查看>>
MySQl备份恢复策略(完全+增量备份策略)
查看>>
VBS发送邮件
查看>>
锁的兼容性
查看>>
解决mysqldump备份报错:SET OPTION SQL_QUOTE_SHOW_CREATE=1
查看>>
mysqldump参数详细说明
查看>>
mysqldump备份及结合binlog日志恢复的全过程
查看>>
SQL Server 查找占用CUP内存的SQL
查看>>
ms sql server缓存清除与内存释放
查看>>
怎样使用命令来结束进程
查看>>
三款免费实用的本地文件夹同步/备份软件推荐 (SyncToy/FreeFileSync/Compare Advance)
查看>>
查找库中某个表的字段情况
查看>>
CREATE TABLE A LIKE B
查看>>
bs调用另一个vbs的函数
查看>>
mysql的“Got error 28 from storage engine”错误
查看>>
jdk安装
查看>>
存档数据迁移
查看>>
查看表对应的文件组
查看>>