C++笔记(基础3):继承
1. 语法
-
原则:
is-a
父类/子类
基类/派生类 -
语法
class 派生类 : [访问限定符] 基类 {
成员
}
如果不写继承访问限定符,默认是private
2. 成员的访问权限
public |
protected |
private |
|
---|---|---|---|
类成员函数 | √ | √ | √ |
友元函数 | √ | √ | √ |
子类函数 | √ | √ | × |
类对象 | √ | × | × |
子类继承了父类所有的成元变量和成员函数。与访问限定符无关。访问限定符只是限制了访问。
子类访问父类成员变量,把父类成员变量访问限制符,改为protected
。
- 继承访问权限变化
分为子类内部和子类对象两种访问方式。
子类内部访问public
继承的父类成员变量
class Base {
public:
int public_data;
protected:
int protected_data;
private:
int private_data;
};
class Derive:public Base {
public:
void test() {
cout<< public_data <<endl;
cout<< protected_data <<endl;
cout<< private_data <<endl;
}
};
子类内部访问public
继承的父类成员函数
#include <iostream>
using std::cout;
using std::endl;
class Base {
public:
void public_func(){
};
protected:
void protected_func(){
};
private:
void private_func(){
};
};
class Derive:public Base {
public:
void test() {
public_func();
protected_func();
private_func();
}
};
- 子类内部访问父类成员
public |
protected |
private |
|
---|---|---|---|
public 继承 | √ | √ | × |
protected 继承 | √ | √ | × |
private 继承 | √ | √ | × |
子类内部访问父类成员,只能访问
public
和protected
成员。
- 子类对象访问父类成员
public |
protected |
private |
|
---|---|---|---|
public 继承 | √ | × | × |
protected 继承 | × | × | × |
private 继承 | × | × | × |
子类只有
public
继承父类的时候,才能访问父类的public
成员,其他都不能访问。
通常子类使用public
继承父类。
子类对象访问父类成员访问限定符的变化
继承方式\父类成员 | public |
protected |
private |
---|---|---|---|
public 继承 | public | protected | 不可见 |
protected 继承 | protected | protected | 不可见 |
private 继承 | private | private | 不可见 |
小结
- public无论类内部还是类对象都可以访问。
- protected类对象不可访问,类内部与继承类的内部可以访问。
- private只有类内部可以访问。