2

在我研究过的大多数 c++ 代码中,复制构造函数中没有 return 语句,但是这个必须返回一个对象。我想明白为什么?

4

2 回答 2

3

构造函数不返回值,它们只是作为对象构造的一部分被调用,而实际的“返回对象”是编译器及其生成代码的工作。

例如,假设您有一个 class Foo,然后在声明该类的变量时

Foo myFoo;

编译器为您创建对象,并调用适当的构造函数

于 2013-08-08T10:05:56.160 回答
2

默认构造函数不返回值。它只是在对象构造时调用。

从标准:

12.1 构造函数 [class.ctor]

类 X 的默认构造函数是类 X 的构造函数,可以在没有参数的情况下调用。如果类 X 没有用户声明的构造函数,则没有参数的构造函数被隐式声明为默认 (8.4)。隐式声明的默认构造函数是其类的内联公共成员。

[……]

不应为构造函数指定返回类型(甚至 void)。构造函数主体中的 return 语句不应指定返回值。不得使用施工人员的地址。

这是一个使用示例:

class Foo
{
public:
    Foo() {} // User defined default constructor
};
Foo myFoo;
于 2013-08-08T10:11:39.583 回答