我正在尝试学习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 constructorSimpleCat FunctionOne(SimpleCat theCat)使用pass by value语义。这要求复制该类实例。因此,调用复制构造函数。

09-11 08:03