复制构造函数返回的值

时间:2013-08-08 10:01:43

标签: c++

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

2 个答案:

答案 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;