先谈谈继承的概念
面向对象的继承就是如上图这样:
从一个类派生另外一个类,使前者所有的特征在后者中自动可用。它可以声明一些类型,这些类型可以共享部分或全都以前所声明的类型,它也可以从超过一个的基类型共享一些特征。
继承是面向对象复用的重要手段。通过继承定义一个类,继承类型之间的关系模型,共享共有的东西,实现各自本质的不同的东西。
不过是把现实生活中实例用能表现事物特征的关键数据来代替(如现实生活中的汽车,发票;对应的抽象后就可以用车牌号,预定数量这样的数据来表示现实生活中的事物)
继承还有好几种情况:
一.继承的关系及继承访问限定符
下面是三种继承关系下基类成员在派生类中的访问变化
那么private和protected都是限定直接访问,那么他们有什么区别?
先看下面这个单继承示例代码在作解释:
#include<iostream>
using namespace std;
class person //父类/基类
{
public:
person()
{
cout << "person" << endl;
}
protected:
int id;
private:
int _age;
};
//class student:protected person
//class student:private person
class student :public person //class 子类/派生类: 继承关系 父类/基类
{
public:
student()
{
cout<< person::id << endl;
cout << _num << endl;
}
public:
int _num;
};
int main()
{
person p;
student s;
return 0;
}
下图发现类可以直接调用父类的id和person(),而不能调用父类中私有的_age成员