【C++】:继承[下篇](友元&&静态成员&&菱形继承&&菱形虚拟继承)
目录
- 一,继承与友元
- 二,继承与静态成员
- 三,复杂的菱形继承及菱形虚拟继承
- 四,继承的总结和反思
点击跳转上一篇文章: 【C++】:继承(定义&&赋值兼容转换&&作用域&&派生类的默认成员函数)
一,继承与友元
友元关系不能继承,也就是说基类友元不能访问子类私有和保护成员 。
二,继承与静态成员
基类定义了static静态成员,则整个继承体系里面只有一个这样的成员。无论派生出多少个子类,都只有一个static成员实例 。
class Person { public: Person() { ++_count; } protected: string _name; // 姓名 public: static int _count; // 统计人的个数。 }; int Person::_count = 0; class Student : public Person { protected: int _stuNum; // 学号 }; int main() { Person p; Student s; cout public: string _name; // 姓名 int _id; int _tel; string _adress; }; class Student : public Person { protected: int _num; //学号 }; class Teacher : public Person { protected: int _id; // 职工编号 }; class Assistant : public Student, public Teacher { protected: string _majorCourse; // 主修课程 }; int main() { //数据冗余和二义性 Assistant a; //a._name = "小李"; //a._name = "李老师"; //1.指定类域 a.Student::_name = "小李"; a.Teacher::_name = "李老师"; } //继承代码续接上…… //1.指定类域 a.Student::_name = "小李"; a.Teacher::_name = "李老师"; } public: string _name; // 姓名 int _id; int _tel; string _adress; }; class Student : virtual public Person { protected: int _num; //学号 }; class Teacher : virtual public Person { protected: int _id; // 职工编号 }; class Assistant : public Student, public Teacher { protected: string _majorCourse; // 主修课程 }; int main() { Assistant a; a.Student::_name = "小李"; a._name = "小李"; a._name = "李老师"; return 0; }
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。