【发布时间】:2017-11-30 15:42:30
【问题描述】:
为什么下面的代码不能编译?
#include <vector>
class Foo
{
public:
Foo()
{ }
virtual ~Foo()
{ }
std::vector<int> aVec;
};
Foo bar =
{
{ 1, 2, 3, 4, 5 }
};
当以下代码编译时:
#include <vector>
class Foo
{
public:
/*Foo()
{ }
virtual*/ ~Foo()
{ }
std::vector<int> aVec;
};
Foo bar =
{
{ 1, 2, 3, 4, 5 }
};
除了提及语言规则,请详细说明这些规则背后的基本原理。
为什么构造函数和虚析构函数的存在停止初始化?
【问题讨论】:
-
当询问编译错误时,请包括编译错误。
-
你是否试图忽略类构造函数?
标签: c++ constructor virtual-destructor