C++ primer plus学习笔记(三)——继承、虚函数、RTTI、友元类、异常、final
继承
前面讲到c++的继承是子类在继承时声明继承的权限,之前描述有点不够准确。以下时书中提及的能继承的成员。
当使用private继承时,父类的所有public成员在当前子类中会变为private。当使用protected继承时,父类的所有public成员在当前子类中会变为protected。。
虚函数
c++中,被定义为虚函数的成员,能被子类重写,虚函数是用virtual修饰的函数。原理是每个有虚函数的类对象内部维护一个的虚方法表成员,记录包含的方法以及对象的类型信息,虚函数只有在运行期(runtime)才会去动态确定使用哪个实现方法
比如:
class SuperClass{
public:
SuperClass(const int & a){
std::cout<<"superClass "<<a<<std::endl;
}
SuperClass(const SuperClass & another){
std::cout<<"copy superClass "<<&another<<" "<<this<<std::endl;
}
void show(){
std::cout<<"I am superClass "<<std::endl;
}
virtual void vShow(){
std::cout<<"vShow I am superClass "<<std::endl;
}
};
class SubClass : public SuperClass{
public:
SubClass(const int & a):SuperClass(a){
//可以通过这样指定使用的父类构造函数
}
void show(){
std::cout<<"I am subClass "<<std::endl;
}
virtual void vShow(){
std::cout<<"vShow I am subClass "<<std::endl