如果一个类总是要被继承,那么构造构造函数是否有意义protected
?
class Base
{
protected:
Base();
};
class Child : protected Base
{
public:
Child() : Base();
};
谢谢。
如果一个类总是要被继承,那么构造构造函数是否有意义protected
?
class Base
{
protected:
Base();
};
class Child : protected Base
{
public:
Child() : Base();
};
谢谢。
仅当您不希望客户创建 的实例时才有意义Base
,而是希望它成为某些 [派生] 类的基类,和/或打算由其朋友使用Base
(参见下面的示例)。记住protected
函数(和构造函数)只能从派生类和friend
类中调用。
class Sample;
class Base
{
friend class Sample;
protected:
Base() {}
};
class Sample
{
public:
Sample()
{
//invoking protected constructor
Base *p = new Base();
}
};
如果它总是作为基础(“mixin”),是的。请记住,具有纯虚函数的类始终是基础,但您不需要这样做,因为它无论如何都无法实例化。