我的 c++ 书是这样说的(lippman,c++ Primer,第五版,第 508 页):
如果类 ... 具有类型未显式定义默认构造函数且该成员没有类内初始化程序的 const 成员,则将合成的默认构造函数定义为已删除。(强调我的)
那么为什么这段代码会产生错误呢?
class Foo {
Foo() { }
};
class Bar {
private:
const Foo foo;
};
int main() {
Bar f; //error: call to implicitly-deleted default constructor of 'Bar'
return 0;
}
上面的规则似乎表明它不应该是一个错误,因为 Foo 确实明确定义了一个默认构造函数。有任何想法吗?