我有一个包含普通构造函数和复制构造函数的类的以下简单代码
class largeObj
{
public:
largeObj()
{
printf("\nNormal constructor\n");
}
largeObj(const largeObj& mv)
{
printf("\nCopy constructor\n");
}
~largeObj()
{
printf("\nDestroying..\n");
}
void tryme()
{
printf("\nHi :)\n");
}
};
largeObj iReturnLargeObjects()
{
largeObj md;
return md;
}
int main()
{
largeObj mdd = iReturnLargeObjects();
mdd.tryme();
return 0;
}
输出是
普通构造函数
复制构造函数
破坏..
你好 :)
我明白了为什么。
但是如果我替换以下行
largeObj mdd = iReturnLargeObjects();
和
largeObj& mdd = iReturnLargeObjects();
输出是一样的,这是为什么呢?
我的意思是:在第一种情况下不应该有另一个副本(没有&)吗?这两条线有什么区别,为什么它们的行为相同?