继承是什么?
继承是c++语言面向对象编程中一个重要的机制,在一个类原有的基础上,增加些新的成分来建立一个新的类
继承方式
1.公有继承
- 基类的公有成员(变量和函数)继承到子类公有成员,在派生类可以访问,类外也可以访问
- 保护成员变成基类的保护成员,派生类可以访问,外部不能访问
- 私有成员子类也一样不可以访问
2.保护继承
- 基类公有成员,子类中继承为自己的保护成员,在派生类可以访问,在外部不可以访问
- 基类保护成员,子类中继承为自己的保护成员,在派生类可以访问,在外部不可以访问
- 基类私有成员,子类一样不可以访问基类的私有成员。
3.私有继承
- 基类公有成员,子类中继承为自己的私有成员,在派生类可以访问,在外部不可以访问。
- 基类保护成员,子类中继承为自己的私有成员,在派生类可以访问,在外部不可以访问。
- 基类私有成员,子类一样不可以访问基类的私有成员,
访问权限和继承权限
- 访问权限和继承权限是不同的概念
- 访问权限和继承权限关键字上是一样的,但是出现位置不一样
- 如果是protected继承方式,基类public的成员变量不能通过基类对象在类外直接访问
- 基类私有的成员变量在子类中都不能直接访问,因为没有被子类继承了
继承代码实例
class A
{
public:
void f(){ cout<<"A::f()"<<endl; }
int a;
};
class B : public A
{
public:
void f(int a){cout<<"B::f()"<<endl;}
int a;
};
int main()
{
B b;
b.f();
return 0;
}
上述代码不能通过编译,调用派生类f()函数参数太少