概念:继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。
语法:
//基类(父类) class Base { private: int m1; int m2; } //派生类 class Son:public Base { private: int v3; int v4; }
访问限定符:
1.公有继承
2.保护继承
3.私有继承
父类的公有属性和成员,到子类是私有
父类的私有属性和成员,到子类还是私有,但是子类成员不能访问这些属性和成员
类成员/继承方式 | public继承 | protected继承 | private继承 |
---|---|---|---|
基类的public成员 | 派生类的public成员 | 派生类的protected成员 | 派生类的private成员 |
基类的protected成员 | 派生类的protected成员 | 派生类的protected成员 | 派生类的private成员 |
基类的private成员 | 派生类中不可见 | 派生类中不可见 | 派生类中不可见 |
总结:
派生类对象会通过 “切片” 或 “切割” 的方式赋值给基类的对象、指针或引用。但是基类对象不能赋值给派生类对象。
注意:
class Person { public: Person(const char* name = "") :_name(name) {} void Print() { cout << "name:" << _name << " age:" << _age << endl; } protected: string _name = ""; int _age = 1; }; class Student : public Person { public: Student() :Person("xiaoming") {} void Print() { cout << "name:" << _name << " age:" << _age << " _stuid:" << _stuid << " _major:" << _major << endl; } private: int _stuid = 0;// 学号 int _major = 0;// 专业 }; int main() { Student s; // 子类对象可以赋值给父类的对象、指针和引用,反过来不行 // Student对象通过 “切片” 或 “切割” 的方式进行赋值 Person p1 = s; Person* p2 = &s; Person& p3 = s; p1.Print(); p2->Print(); p3.Print(); // 基类的指针可以通过强制类型转换赋值给派生类的指针 Student* ps = (Student*)p2; ps->Print(); return 0; }
标签:c++,输入,文件,方法,编程,设置,代码,安装,链接,下载,压缩 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。