1、什么是继承?
继承描述的是类与类之间的关系,A类继承B类,A类就拥有B类的数据和方法。
继承的方式:
公有继承(public)
保护继承(protected)
私有继承(private)
2、继承中构造和析构的顺序
子类无法继承父类的函数:构造函数、析构函数、重载=运算符
3、子类必须通过初始化列表调用父类的有参构造
调用成员或父类的有参构造,必须使用初始化列表
4、继承中的同名处理
处理方法:加作用域是最安全、最方便的处理方式
1、继承的同名数据子类中优先选择子类同名数据
2、继承的同名函数
子类重新定义了父类的同名函数,将屏蔽父类的所有同名函数。
class Base
{
public:
int a;
public:
Base(int a):a(a){}
void func(int x)
{
cout<<"父类的func int"<<endl;
}
void func(int x,int y)
{
cout<<"父类的func int int"<<endl;
}
};
class Son:public Base
{
public:
int a;
public:
Son(int x, int y):Base(x),a(y){}
//子类重新定义了 父类的func函数 将屏蔽父类的所有同名函数
void func(int x,int y,int z)
{
cout<<"子类 func int int int"<<endl;
}
};
void test01()
{
Son ob1(10,20);
ob1.func(10);//err
ob1.func(10,20);//err
}
如果子类非要用父类的同名函数,需要加作用域