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. JavaScript语句和异常

    知识内容: 1.条件语句(分支语句) 2.循环语句 3.with语句 4.异常处理 5.本节练习 参考资料:<JavaScript高级程序设计> 1.条件语句 JavaScript中的条件 ...

  2. python 字体颜色的设置

    实现过程:       终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关.       转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27 ...

  3. uva-193-图染色-枚举

    题意:n个节点,可用描成黑色或者白色,黑节点和黑节点不能相连,问最多描出多少黑节点 #include <iostream> #include <stdio.h> #includ ...

  4. java二维数组的长度

    //多少行 a.length //多少列 a[i].length

  5. 怎么才能将文件流或者图片转化为base64,传到前台展示

    图片转化为base64,传到前台展示 public String getBase64(){ String imgStr = ""; try { File file = new Fi ...

  6. OpenCV版本下载

    https://sourceforge.net/projects/opencvlibrary/files/opencv-win/

  7. ABAP-年月期间搜索帮助

    selection-screen begin of block block1 with frame title text-. parameters:p_mon1 like s031-spmon, p_ ...

  8. C#怎么判断字符是不是汉字

    .用ASCII码判断 在 ASCII码表中,英文的范围是0-,而汉字则是大于127,根据这个范围可以判断,具体代码如下: string text = "我去"; bool res ...

  9. subnet partition

    例1:本例通过子网数来划分子网,未考虑主机数. 一家集团公司有12家子公司,每家子公司又有4个部门.上级给出一个172.16.0.0/16的网段,让给每家子公司以及子公司的部门分配网段. 思路:既然有 ...

  10. (1)shiro简介和第一个demo

    之前一直在用shiro开发,不过只是会使用,并没有深入了解,最近有时间学习了一下,把最近学习所得分享一下. shiro简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授 ...