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. HTML5 新特性(一)

    1. 新的Doctype 尽管使用<!DOCTYPE html>,即使浏览器不懂这句话也会按照标准模式去渲染 2. Figure元素 用<figure>和<figcapt ...

  2. python中的模块及包及软件目录结构规范

    知识内容: 1.模块的定义与分类 2.模块的导入 3.模块与包 4.不同目录下的模块调用 一.模块的定义与分类 1.什么是模块 模块就是实现了某个功能的代码集合,模块是由一大堆代码构成的 类似于函数式 ...

  3. foreach的使用

    //foreach循环语句,常用来遍历数组,一般有两种使用方法:不取下标,取下标 //不取下表 foreach(数组 as 值) { //执行的程序 echo 值; } //取下标 foreach(数 ...

  4. OpenACC Julia 图形

    ▶ 书上的代码,逐步优化绘制 Julia 图形的代码 ● 无并行优化(手动优化了变量等) #include <stdio.h> #include <stdlib.h> #inc ...

  5. 哈希学习(2)—— Hashing图像检索资源

    CVPR14 图像检索papers——图像检索 1.  Triangulation embedding and democratic aggregation for imagesearch (Oral ...

  6. leetcode405

    public class Solution { string ConverToHex(string bit) { var s = ""; switch (bit) { " ...

  7. 打印机 KX-MB788CN 佳能

    打印机 KX-MB788CN http://panasonic.cn/oa/help/download.asp?type=drivers&pid=1066 佳能打印机 腾彩 PIXMA MP2 ...

  8. MFC-Dialog各函数的执行顺序

    CDlgTestDlg::CDlgTestDlg CDlgTestDlg::DoModal CDialog::DoModal CDlgTestDlg::PreSubclassWindow CDlgTe ...

  9. 15 python re 模块

    1.基础知识 正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎 正则表达式的大致匹配流程:依次拿出表达式和文本中的字符比较, 如果每一个字符都能匹配,则匹配成功:一旦有匹 ...

  10. python传参数

    Python参数传递采用的肯定是“传对象引用”的方式.这种方式相当于传值和传引用的一种综合.如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对 ...