是的,在构造函数中使用 return 语句是完全标准的。
构造函数是不返回值的函数。不返回值的函数族包括:void 函数、构造函数和析构函数。它在 C++ 标准的 6.6.3/2 中有说明。同样的 6.6.3/2 声明return
在不返回值的函数中使用参数是非法的。
6.6.3 返回语句
2没有表达式的 return 语句只能用于不返回值的函数,即返回类型为 void 的函数、构造函数 (12.1) 或析构函数 (12.4)。带有非 void 类型表达式的 return 语句只能用于返回值的函数;表达式的值返回给函数的调用者。
此外,12.1/12 指出
12.1 构造函数
12不应为构造函数指定返回类型(甚至 void)。构造函数主体中的 return 语句不应指定返回值。
请注意,顺便说一句,在 C++ 中,return
与 void 函数中的参数一起使用是合法的,只要 的参数return
具有类型void
void foo() {
return (void) 0; // Legal in C++ (but not in C)
}
但这在构造函数中是不允许的,因为构造函数不是 void 函数。
还有一个与使用return
with 构造函数相关的相对模糊的限制:在构造函数的 function-try-block 中使用是非法return
的(与其他函数一起使用是可以的)
15.3 处理异常
15如果 return 语句出现在构造函数的 function-try-block 的处理程序中,则程序格式错误。