在我研究过的大多数 c++ 代码中,复制构造函数中没有 return 语句,但是这个必须返回一个对象。我想明白为什么?
问问题
134 次
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 回答