class TEST{
private : public :
TEST() {std::cout << "constructor" << std::endl; }
~TEST() {std::cout << "destructor" << std::endl; } }; class TEST fun(void)
{
TEST t, tt; return t;
} int main()
{ class TEST t = fun(); std::cout << "test...test" << std::endl; }

$ ./pointer_reference
constructor
constructor
destructor
test...test
destructor //main函数中创建 t 实际上就是复制

class TEST{
private : public :
TEST() {std::cout << "constructor" << std::endl; }
~TEST() {std::cout << "destructor" << std::endl; } }; class TEST fun(void)
{
TEST t; TEST tt = t; return t;
} int main()
{ class TEST t = fun(); std::cout << "test...test" << std::endl; }

$ ./pointer_reference
constructor
destructor  //创建tt时候没有调用构造函数
test...test
destructor  //t 最后被释放

class TEST{
private : public :
TEST() {std::cout << "constructor" << std::endl; }
~TEST() {std::cout << "destructor" << std::endl; } }; #if 0 //case 0
void fun(class TEST t)
#else //case 1
void fun(class TEST& t)
#endif
{
return;
} int main()
{
class TEST t; fun(t); std::cout << "test...test" << std::endl; }

case 0:

$ ./pointer_reference
constructor
destructor
test...test
destructor

case 1:

$ ./pointer_reference
constructor
test...test
destructor

c++ 对象复制引用时何时调用构造函数、析构函数的更多相关文章

  1. c++,类的对象作为形参时一定会调用复制构造函数吗?

    c++,类的对象作为形参时一定会调用复制构造函数吗? 答:如果参数是引用传递,则不会调用任何构造函数:如果是按值传递,则调用复制构造函数,按参数的值构造一个临时对象,这个临时对象仅仅在函数执行是存在, ...

  2. c++中形参为引用和非引用时调用构造函数

    #include<iostream> using namespace std; class numbered { private:static int seq; public: numbe ...

  3. 对象复制问题 && lvalue-rvalue && 引用

    按值传递实参到函数和函数返回临时变量的副本,函数的效率对执行性能来说至关重要 如果避免这样的复制操作,则执行时间可能会大大缩短. class CMessage { private: char * m_ ...

  4. OC_内存管理(二)对象复制、循环引用问题、自动释放池

      循环调用: 1.循环引用的问题 两个对象A.B,有可能会出现特殊情况:A中包含B的实例变量:B中也包含A的实例变量,如果这两个实例变量都是强引用(A有着B的实例变量所有权,B也有A的实例变量所有权 ...

  5. Java学习笔记----你可能不知道那些知识,对象复制与引用

    1.private ,protected,static不能用来修饰interface. 2.java在处理基本数据类型(比如int ,char,double)时,都是採用按值传递的方式运行.除此之外的 ...

  6. PHP写时复制, 变量复制和对象复制不同!!!

    2016年3月18日 15:09:28 星期五 一直以为PHP对象也是写时复制....... 其实: PHP的变量是写时复制, 对象是引用的 写时复制: $a = $b; 如果$b的内容不改变, $a ...

  7. 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针

      您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...

  8. Java面试 - 复制引用和复制对象的区别?

    复制引用:把原对象的地址赋给了一个新的引用变量,只要其中一个对象的属性发生变化,另一个对象的属性也随之发生变化. 复制对象:把原对象的内容赋给了一个新的对象,其中一个对象的属性发生变化,并不影响另一个 ...

  9. 错误笔记 对象为null时调用改对象的方法会报错

    对象为null时调用改对象的方法会报错

随机推荐

  1. Log4j发送邮件

    源码地址:https://github.com/mistbor/Log4jSendMail 引入activation.jar           log4j.jar            mail.j ...

  2. 进度条 --- socket ---socketserver

    TCP:可靠的面向连接的协议,传输效率低,全双工通信,流数据传输.运用:web浏览器,电子邮件,文件传输程序 UDP:不可靠的,无连接的服务,传输效率高,面向数据包的传输,只能发短消息.运用:dns ...

  3. oracle10偶然性卡住登陆

    连接数据库异常:登陆数据库后以"conn /as sysdba"方式登陆正常,数据库轻载,无压力:于是检查数据库的监听器,输入"lsntctl services" ...

  4. 0_Simple__vectorAdd + 0_Simple__vectorAdd_nvrtc + 0_Simple__vectorAddDrv

    ▶ 使用 CUDA Runtime API,运行时编译,Driver API 三种接口计算向量加法 ▶ 源代码,CUDA Runtime API #include <stdio.h> #i ...

  5. Windows系统日常运维

    WINDOWS系统日常运维 http://www.docin.com/p-677263438.html

  6. vi和vim的三种模式

    1.一般模式 用vi 或vim 命令 ——>一般模式 2. 插入模式 i,o,a,r 及其各自大写 ——>插入模式 一般用 i 3.命令行模式 用命令来完成 读取,存盘,替换,离开vim ...

  7. [ilink32 Error] Error: Unresolved external 'SendARP'

    [ilink32 Error] Error: Unresolved external 'SendARP' referenced from E:\APPOBJ\KSRGETMAC.OBJ #pragma ...

  8. oracle imp dmp

    windows>cmd> imp userid=用户名/密码@orcl file=d:\nc60.dmp full=y imp userid=SYSTEM/password@orcl fi ...

  9. Select Case 的简单实现

    FOR %%f in (1,3,5,7,) do if errorlevel == %%f goto CASE%%f        echo                    ERROR      ...

  10. 机器学习入门-随机森林温度预测-增加样本数据 1.sns.pairplot(画出两个关系的散点图) 2.MAE(平均绝对误差) 3.MAPE(准确率指标)

    在上一个博客中,我们构建了随机森林温度预测的基础模型,并且研究了特征重要性. 在这个博客中,我们将从两方面来研究数据对预测结果的影响 第一方面:特征不变,只增加样本的数据 第二方面:增加特征数,增加样 ...