写在前面
继承是c++语言一个重要的机制,该机制自动地为一个类提供来自另一个类的操作和数据结构,这使得程序员只需在新类中定义已有的类中没有的成分来建立一个新类。
什么是继承
继承是类的重要特性。A类继承B类,我称B类为“基类”,A为“子类”。A类继承了B类之后,A类就具有了B类的部分成员,具体得到了那些成员,这得由两个方面决定:
- 继承方式
- 基类成员的访问权限
#include<iostream>
using namesprace std;
class Base//基类
{
private:
int _b;
public:
Base(int b)
:_b(b)
{}
void FunTest1()
{
cout<<"Base::FunTest1()"<<endl;
}
~Base()
{}
};
//共有继承public/保护继承protected /私有继承private
class Dir:public Base//子类
{
private:
int _d;
public:
Dir(int b,int d):Base(b)
:_d(d)
{}
void FunTest2()
{
cout<<"Dir::FunTest2()"<<endl;
}
~Dir()
{}
};
int main()
{
Base b(12);
Dir d(13,24);
b.FunTest1();
d.FunTest2();
return 0;
}
知识点
@1基类公有成员,子类中继承为自己的保护成员,在派生类可以访问,在外部不可以访问
@2基类保护成员,子类中继承为自己的保护成员,在派生类可以访问,在外部不可以访问
@3基类私有成员,子类一样不可以访问基类的私有成员。
私有继承(private)
私有继承方式的,就是在继承时,把protected变成private,它需要注意的事项为:
(1) 基类公有成员,子类中继承为自己的私有成员,在派生类可以访问,在外部不可以访问。
(2). 基类保护成员,子类中继承为自己的私有成员,在派生类可以访问,在外部不可以访问。
(3) 基类私有成员,子类一样不可以访问基类的私有成员,
三种继承方式比较
从上面的结果来看,私有继承和保护继承作用完全一样。仔细一想其实还是有区别,区别是如果派生类再一次去派生其它类时,对于刚才的私有继承来说,再派生的类将得不到任何成员。而对于刚才的保护继承,仍能够得到基类的公有和保护成员。
派生类的构造
派生类是可以访问基类保护的数据成员,但是还有一些私有数据成员,派生类是无法访问的,并且为提醒类的独立性,我们还是希望通过调用基类的成员函数去初始化这些成员变量,所以派生类是通过调用基类的构造函数,实现对成员变量的初始化。具体代码示例,见上。