为什么类的拷贝构造函数的参数必须是引用

转载 2012年03月31日 15:48:14
  为什么类的拷贝构造函数的参数必须是引用(解决方法来源与CSDN
(1)      我首先想如果传值为什么不可以呢,传值可以完成所有的数据成员的复制工作啊。原因在与这个函数本身是个拷贝构造函数,是用来初始化别的新的对象的。
例如:
T&   operator=(T   t); 
 那么我们调用 
 T   t1; 
 T   t t1;时,拷贝构造函数被调用, 
当我们传值t1的时候,我们在函数里面操作的都是一个临时的对象,要在运行栈里面复制一个副本t2,但是这个临时对象的创建也要调用自身这个拷贝构造函数,因此在上面的那个拷贝构造函数的第一次调用内部又再一次调用自身:
 T t(t1)
{ //伪代码
 T t2(t1);
//从这里才是开始用户定义的其他的复制工作
}
T t2=t(t1).来产生函数里面的对象副本t2,这就导致了一个死循环,t2的构造过程中又要调用自身这个拷贝构造函数:
就像下面的情况:
 
T t(t1)
{ //伪代码
 T t2(t1)
{//这里也是先调用本身拷贝一个副本t3
 T t3(t1)
    {//再调用本身拷贝一个副本t4;
     ……………………
//从这里才是开始用户定义的其他的复制工作
}
这样看来,调用要无止境了,所以是不能传值的
第一个问题解决;
 
(2)我又想可以传指针啊,但是传指针是没有传引用方便和直观的
   但是这样用就麻烦了
例如:class T;
T t1;
      如果拷贝构造函数传指针那就要这样调用:
      T t2(&t1);
      现在只要这样就可以:
      T t2(t1);
由于赋值符的重载的实际上跟拷贝构造函数是一样的,此时更明显了//以下描述是错误的,赋值符的重载和拷贝构造函数是不一样的
    T t2=&t1;
    T t2=t1;哪个方便,当然是第二种。
   至此,第二个问题解决;



本文转自:http://blog.csdn.net/tangaowen/article/details/1701703

相关文章推荐

拷贝构造函数的参数类型必须是引用

原文:http://blog.csdn.net/hackbuteer1/article/details/6545882

【C++】C++中拷贝构造函数的参数类型必须是引用

在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。 但是如果我问你“拷贝构造函数的参数为什么必须使用引用类型?”这个问题, 你会怎么回答? 或许你...

拷贝构造函数的参数为什么必须使用引用类型

转自:http://blog.csdn.net/tunsanty/article/details/4264738  在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本...

拷贝构造函数是必须要带引用类型的参数的

转 拷贝构造函数的参数为什么必须使用引用类型   2011-03-26 17:19:32|  分类: C++ |  标签: |字号大中小 订阅     在C++中, 构...

拷贝构造函数的参数类型必须是引用

在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。 但是如果我问你“拷贝构造函数的参数为什么必须使用引用类型?”这个问题, 你会怎么回答? 或许你...
  • jw903
  • jw903
  • 2014-08-20 12:00
  • 498

拷贝构造函数的参数为什么必须使用引用类型

在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。 但是如果我问你“拷贝构造函数的参数为什么必须使用引用类型?”这个问题, 你会怎么回答? 或许你...

拷贝构造函数的参数类型必须是引用(转)

在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。那么 拷贝构造函数的参数为什么必须使用引用类型? 原因:        如果拷贝构造函数中的...

拷贝构造函数的参数为什么必须使用引用类型

拷贝构造函数的参数为什么必须使用引用类型  转自:http://blog.csdn.net/tunsanty/article/details/4264738  在C++中, 构造函数,拷贝...

拷贝构造函数是必须要带引用类型的参数的

在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。 但是如果我问你“拷贝构造函数的参数为什么必须使用引用类型?”这个问题, 你会怎么回答? 或许你...

拷贝构造函数的参数为什么必须使用引用类型

在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。 但是如果我问你“拷贝构造函数的参数为什么必须使用引用类型?”这个问题, 你会怎么回答? 或许你...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)