在构造函数中返回空

时间:2010-11-23 00:31:42

标签: c++ constructor

我希望Visual Studio给我一个错误或者至少是一个警告,但是当我在构造函数中有一个空return时它也没有给我:

MyObject::MyObject()
{
    if (/*some condition*/)
    {
        //SomeCode
        return;
    }

    // continue with other code
}

到目前为止,我在有限的经验中没有看到过这个用法,所以我的问题是在构造函数中返回是否可以?

这更像是一个好奇心问题,因为我知道编码很容易,你永远不必把返回放在那里,虽然我有一个实例,这将是非常有用的,但在使用它之前,我想看看它是否被禁止(可能是标准的,或者通常不是一个好主意)。

2 个答案:

答案 0 :(得分:11)

标准说:

  

12.1构造函数
  ...
  一个回归声明在一个体内   构造函数不应指定返回   值。构造函数的地址   不得采取   ...

在构造函数中使用return;是可以的。我的理解是允许这样,以便程序员可以从构造函数中尽早返回,而不需要弄乱布尔标志。

答案 1 :(得分:5)

没关系。这意味着该对象已成功构建。如果您遵循在初始化列表中初始化成员变量的一般建议,它不应该咬你。 它类似于无辜的下面代码。

MyObject::MyObject () {
    if (/* something */) {
        // SomeCode
    } else {
        // continue with other code
    }
}