为什么将构造函数设置为explicit后,派生类仍然可以隐式调用它?
class A{
public:
explicit A(){}
};
class B : public A{
public:
B(){ //Constructor A() is called implicitly
//...
}
}
在我的程序中,我遇到了一个情况,在那种情况下,我更希望有编译器错误,这会节省我很多时间去查找错误。目前,我已经改变了 A 的默认构造函数来接受一个虚拟的 "int" 参数来实现这一点,但是应该使用 "explicit" 关键字才能解决吗?
g++-4.8 编译上述代码没有任何错误或警告。
B
,必须调用A
的构造函数。如果您没有指定自定义构造函数,则使用默认构造函数是有意义的。 - yizzlez