目录
1. 继承概念与定义
1.1 概念
1. 继承:保持原有类特性的基础上进行扩展,增加功能,这样产生新的类(派生类),本质是类的复用。
2. 子类会继承父类的成员变量和成员函数。
class Person { public: void Print() { ... } protected: string _name = "peter"; // 姓名 int _age = 18; // 年龄 }; class Student : public Person { protected: int _stuid; // 学号 }; class Teacher : public Person { protected: int _jobid; // 工号 }; int main() { Student s; Teacher t; s.Print(); t.Print(); return 0; }
1.2 定义
【格式】
【继承方式】
1. 有三种继承方式。
【继承后成员访问限定符的变化】
1. 父类私有成员继承后子类不可见不可用,无论子类类内类外。
2. 父类公有或保护成员继承后与继承方式比较,谁小就是谁,public > protected > private。
3. 父类的保护成员,类外不能访问,但是可以继承给子类类内访问。
2. 父类与子类的赋值规则
1. 子类可以赋值给父类/父类指针/父类引用。
2. 父类不可以赋值给子类。
3. public继承中,子类可以看作是一个特殊的父类,is-a的关系。
class Person { protected : string _name; // 姓名 string _sex; // 性别 int _age; // 年龄 }; class Student : public Person { public : int _No ; // 学号 }; void Test () { Student s; Person p = s; Person* pp = &s; //指向子类的父类部分 Person& rp = s; //父类部分的引用 }
3. 继承的作用域
1. 父类和子类都有自己的独立作用域。
2. 父类和子类允许有同名成员,默认访问子类的,因为隐藏了父类的同名成员,想访问父类的同名成员使用基类::基类成员显示访问。
class Person { protected :