为什么我们放&在复制构造函数?

时间:2013-09-05 18:19:07

标签: c++ copy-constructor

我是一名c ++新手,我想知道为什么我们需要放置&在c ++类的复制构造函数中。我知道使用&符号提供了要复制的对象的引用,并且没有创建对象的新副本。但是为什么我不允许复制对象(忽略内存使用点) ?

2 个答案:

答案 0 :(得分:6)

如果未指定按引用调用,则按值调用:编译器将生成对复制构造函数的调用以传递参数。如果复制构造函数按值获取其参数,则最终会得到无限递归。

答案 1 :(得分:0)

如果我们这样做,ClassA a = b(已经构建了ClassA), 和Copy Constructor的实现为,

ClassA :: ClassA(ClassA a) {    //把你的代码复制 }

然后,对于此调用,复制构造函数将为每个ClassA a = b调用无限次。