我想知道这种形式的构造函数调用的文档记录在哪里。这个语法显然是从Visual Studio6.0开始就有效的(我知道它不能使用G++编译)。
请注意,我并不是在寻找替代方案,我也不需要知道它是好是坏。
class Foo
{
public:
int m_value;
Foo() : m_value(0) {}
};
Foo o;
o.m_value = 5;
o.Foo::Foo(); // Explicit constructor call!
EXPECT_EQ(0, o.m_value); // True!我第一次读到这篇文章时发现了这个语法:
http://www.dreamincode.net/forums/topic/160032-finite-state-machines/
这篇文章也提到了这个语法:
Can I call a constructor from another constructor (do constructor chaining) in C++?
另一篇讨论这件事的帖子:
发布于 2013-10-29 02:06:16
假定的显式构造函数调用不是有效的C++语法。事实上,MSVC接受这样的代码is a bug。
发布于 2013-10-29 02:49:43
它没有任何用处,因为您在中间创建了一个瞬态对象,当对象o中包含的作用域ends.What ever值保持不变时,它就会消亡,所以您得到了True值
https://stackoverflow.com/questions/19641698
复制相似问题