继承语法 : 使用 class 关键字 定义 子类 , 在 子类后面 使用 冒号 :
与 若干父类隔开 ;
class 子类名称 : 父类列表
{
// 子类成员
};
父类列表格式 : 上述 " 父类列表 " 的格式如下 , 父类列表 由 若干父类组成 , 可以是 一个 , 也可以是 多个 ;
访问控制 父类名称 , 访问控制 父类名称 , ... , 访问控制 父类名称 ;
访问控制符 : 访问控制符 用于 设置 继承的方式 ;
C++ 的 三种继承
只针对 父类 的 " 公有成员 " 和 " 保护成员 " , 这两种成员是可以被继承的 ;
父类的 " 私有成员 " 是无法被子类 继承 和 访问 的 ; 父类的 私有成员 只能在 父类中 , 由父类自己的成员访问 ;
除 父类 之外的任何类 , 包括子类 , 都不能访问 父类的 私有成员 , 这是为了保护 类的 封装性 和 安全性 而制定的规则 ;
子类 不能直接访问 父类的 私有成员 ,
但是可以通过在 父类 中提供 公有 或 保护 的 成员函数 来访问这些私有成员 ;
这些成员函数可以在子类中重写或复用 , 以便让子类能够访问和操作基类的私有成员 ;
如果在 子类 中 尝试访问 父类 的 私有成员 , 会报如下错误 :
Test.cpp(34,1): error C2248: “Parent::privateFun”: 无法访问 private 成员(在“Parent”类中声明)
Test.cpp(18): message : 参见“Parent::privateFun”的声明
Test.cpp(6): message : 参见“Parent”的声明
代码示例 :
#include "iostream"
using namespace std;
#include
class Parent {
public:
void publicFun() {
cout << "父类公有成员" << endl;
}
protected:
void protectedFun() {
cout << "父类保护成员" << endl;
}
private:
void privateFun() {
cout << "父类私有成员" << endl;
}
};
// 子类 公有继承 父类
class Child : public Parent {
public:
void publicFunChild() {
// 子类 可以访问 父类 的公有成员
publicFun();
// 子类 可以访问 父类 的保护成员
protectedFun();
// 任何类型的继承 都不能访问 父类的私有成员
//privateFun();
}
};
int main() {
Child c;
c.publicFunChild();
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
}
执行结果 :
父类公有成员
父类保护成员
Press any key to continue . . .