我正在尝试学习C++,并且正在通过“Sams在21天之内自学C++”的工作。
到目前为止,我的进步非常好,甚至毫无困难地通过了有关指针的章节。但是,“通过引用传递对象”上的 list 使我很困惑。
有一个带有两个构造函数的类:
class SimpleCat
{
public :
SimpleCat();
SimpleCat(SimpleCat&);
...
};
原型(prototype)具有两个功能:
SimpleCat FunctionOne( SimpleCat theCat );
SimpleCat* FunctionTwo( SimpleCat *theCat );
/让我感到困惑的是,当调用第二个函数时,第二个构造函数
SimpleCat(SimpleCat&);
被调用。有人可以解释一下吗?任何进一步的搜索都使我同样困惑。 /编辑:我在这里的帖子中犯了一个错误,使用第一个函数调用了复制构造函数(现在我知道它是什么,非常感谢)。对不起,我感到困惑。我知道现在已经了解了链接,并且你们都提供了极大的帮助。
最佳答案
SimpleCat(SimpleCat&)
是copy constructor。 SimpleCat FunctionOne(SimpleCat theCat)
使用pass by value语义。这要求复制该类实例。因此,调用复制构造函数。