在我研究的大多数c ++代码中,复制构造函数中没有return语句,但是这个必须返回一个对象。我想明白为什么?
答案 0 :(得分:3)
构造函数不返回值,它们只是作为对象构造的一部分调用,而实际的“返回对象”是编译器及其生成代码的作用。
例如,假设您有一个类Foo
,然后在声明该类的变量时
Foo myFoo;
编译器为您创建对象,并调用相应的构造函数
答案 1 :(得分:2)
默认构造函数不返回值。它只是在对象构造中调用。
来自标准:
12.1构造函数[class.ctor]
类X的默认构造函数是类X的构造函数,可以在没有参数的情况下调用。如果类X没有用户声明的构造函数,则没有参数的构造函数被隐式声明为默认值(8.4)。隐式声明的默认构造函数是其类的内联公共成员。
<强> [...] 强>
不应为构造函数指定返回类型(甚至无效)。构造函数体中的return语句不应指定返回值。不得采用构造函数的地址。
以下是使用示例:
class Foo
{
public:
Foo() {} // User defined default constructor
};
Foo myFoo;