举个例子:
class Foo {
private:
const std::string m_str1;
const std::string m_str2;
std::string foo() {
std::cout << ("'" + m_str2 + "'") << std::endl;
return "whatever1";
}
public:
Foo() : m_str1(foo()), m_str2("whatever2") { }
};
int main() {
Foo foo;
return 0;
}
在我的计算机上,它打印出 '' (一个接一个的两个单引号),表明 m_str2 实际上是在执行构造函数列表之前将值初始化为空字符串。
但总的来说这是真的吗?