1.纯虚函数是实现接口的良好选择,拥有纯虚函数的类是抽象类,我们无法声明一个纯虚类的对象,只有当类派生纯虚类并实现纯虚函数时,派生类才不是抽象类。此外我们可以在类外部给纯虚函数一个定义,给出定义后我们就可以调用纯虚函数了,例如在抽象类的构造函数中调用纯虚函数或者在派生类的成员函数中中隐藏函数作用域,不过最好不要这么做,gcc会在编译时给出警告。如果不给出纯虚函数的定义,那么调用纯虚函数就不能链接成功。
2.继承类型分为private、protected和public三种,对于派生类成员来说怎么继承都一样,派生类还是只能访问基类的public和protected成员。但是对于派生类的用户来说,使用protected继承时,派生类继承过来的基类的public成员都变成了protected,同样使用private继承时,派生类继承过来的基类的成员都变成了private。一般使用public继承即可,其余两种基本没什么使用场景。
网友评论