我很困惑,为什么我必须编写这个类的拷贝构造函数,当我在第一个提到的类的返回类型中定义一个函数在另一个类中时。当我定义一个具有该类的非引用返回类型的函数时,哪一个类的默认或复制构造函数被调用?
例如:
class Foo{
// attributes
public:
Foo(){...}
// I had to write the CC
Foo(const Foo& obj){
//...
}
}
class Bar{
// ....
// This is the function
Foo SomeFunction()
{
Foo myVar;
// ....
return myVar;
}
我检查了由荷兰国际集团cout
的拷贝构造函数实际上是被调用。
我需要确认,因为在这种情况下调用默认的构造函数似乎更符合逻辑,就像在创建myVar
的这一行中一样。
我是初学者,所以我试图围绕这些调用包围我的头。
'myVar'是函数内部的局部变量,它需要被复制到外部变量。 – songyuanyao
@songyuanyao所以复制构造函数在复制时被调用? – developer10
是的,通过复制ctor或复制分配。 – songyuanyao