9 c++ polymorphism inheritance base-class
如果一个类总是要继承,那么构造函数protected
是否有意义?
class Base
{
protected:
Base();
};
class Child : protected Base
{
public:
Child() : Base();
};
Run Code Online (Sandbox Code Playgroud)
谢谢.
Naw*_*waz 11
那才有意义,如果你不希望客户端创建的实例Base
,而你想让它是基类的一些[派生]类,和/或打算将它的朋友可以使用Base
(见下面的例子).记住protected
函数(和构造函数)只能从派生类和friend
类中调用.
class Sample;
class Base
{
friend class Sample;
protected:
Base() {}
};
class Sample
{
public:
Sample()
{
//invoking protected constructor
Base *p = new Base();
}
};
Run Code Online (Sandbox Code Playgroud)