几种继承的方式
2016-04-01 21:03
453 查看
源代码:
![](http://img.blog.csdn.net/20160401210553625?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
总结:
1.继承:单继承,多继承;派生:单基类派生,多基类派生;
2.继承的方式:public(公共继承),private(私有继承),protected(保护继承);
3.类的继承只能够继承类的全部东西,而不能够选择性的继承,这一点是现阶段C++无法解决的,也可以说是继承的一个弊端,有些东西在继承的时候是不能够全部都用到的,所以,会浪费一些空间;
4.可以在派生类中声明一个与基类成员同名的成员,则在派生类中的新成员就会覆盖基类的同名成员,个人觉得这点好像可以消减一些空间,但是消减的空间是少数的,而且一个变量的名字最好是于这个变量的用处相联系的,所以这种方法并不是很好;
5.继承不能够继承构造函数和析构函数,在派生中需要构造函数和析构函数的话就要自己定义;
6.在继承中(不管是公共继承、私有继承、保护继承)私有成员私有的性质是不会被改变的;
7.公共继承:基类中的数据的性质没有被改变,它的性质就按照普通类的性质理解就好了;私有继承:性质被改变了,将基类中公共成员私有化了,也就是基类中的成员只能在派生类中引用了,不能再其他的地方引用了;保护继承:在单继承中,保护继承和私有继承其实是等效的,但是在二次继承时就会出现差别,在私有继承中,派生类的派生类时不能够引用最原始基类中的成员的,但是在保护继承中就可以。
<span style="font-size:14px;">#include<iostream> #include<string> using namespace std; class Information { public: string name; string sex; }; class Information2:public Information //公共继承 { public: void Information2_cin(); void Information2_cout(); private: double number; }; void Information2::Information2_cin() { cin>>name>>sex>>number; } void Information2::Information2_cout() { cout<<"name:"<<name<<endl; cout<<"sex:"<<sex<<endl; cout<<"number:"<<number<<endl; cout<<endl; } class Information3: private Information //私有继承 { public: void Information3_cin(); void Informatiom3_cout(); private: double classes; }; void Information3::Information3_cin() { cin>>name>>sex>>classes; } void Information3::Informatiom3_cout() { cout<<"name:"<<name<<endl; cout<<"sex:"<<sex<<endl; cout<<"classes:"<<classes<<endl; cout<<endl; } class Information4 { public: protected: string name; string sex; }; class Information5: protected Information4 //保护继承 { public: void Information5_cin(); void Information5_cout(); private: double grade; }; void Information5::Information5_cin() { cin>>name>>sex>>grade; } void Information5::Information5_cout() { cout<<"name:"<<name<<endl; cout<<"sex:"<<sex<<endl; cout<<"grade:"<<grade<<endl; cout<<endl; } class Information6:public Information5 { public: void Information6_cin(); void Information6_cout(); private: string color; }; void Information6::Information6_cin() { Information5_cin(); cin>>color; } void Information6::Information6_cout() { Information5_cout(); cout<<"color:"<<color<<endl; } int main() { Information2 p1; Information3 p2; Information5 p3; Information6 p4; p1.Information2_cin(); p2.Information3_cin(); p3.Information5_cin(); p4.Information6_cin(); cout<<endl; p1.Information2_cout(); p2.Informatiom3_cout(); p3.Information5_cout(); p4.Information6_cout(); cout<<p1.name<<endl;//继承的特性例子 return 0; }</span>运行结果:
总结:
1.继承:单继承,多继承;派生:单基类派生,多基类派生;
2.继承的方式:public(公共继承),private(私有继承),protected(保护继承);
3.类的继承只能够继承类的全部东西,而不能够选择性的继承,这一点是现阶段C++无法解决的,也可以说是继承的一个弊端,有些东西在继承的时候是不能够全部都用到的,所以,会浪费一些空间;
4.可以在派生类中声明一个与基类成员同名的成员,则在派生类中的新成员就会覆盖基类的同名成员,个人觉得这点好像可以消减一些空间,但是消减的空间是少数的,而且一个变量的名字最好是于这个变量的用处相联系的,所以这种方法并不是很好;
5.继承不能够继承构造函数和析构函数,在派生中需要构造函数和析构函数的话就要自己定义;
6.在继承中(不管是公共继承、私有继承、保护继承)私有成员私有的性质是不会被改变的;
7.公共继承:基类中的数据的性质没有被改变,它的性质就按照普通类的性质理解就好了;私有继承:性质被改变了,将基类中公共成员私有化了,也就是基类中的成员只能在派生类中引用了,不能再其他的地方引用了;保护继承:在单继承中,保护继承和私有继承其实是等效的,但是在二次继承时就会出现差别,在私有继承中,派生类的派生类时不能够引用最原始基类中的成员的,但是在保护继承中就可以。
相关文章推荐
- bzoj 1486: [HNOI2009]最小圈
- Mac Os系统设置
- FMDB官方使用文档 G-C-D的使用 提高性能(翻译)
- DOM and BOM
- 算式的解析算法
- 本体自动提取工具的初步实验计划书
- Mybatis源码分析之执行完整分析
- 【Coursera】Machine learning - week7 : Support Vector Machines
- 正则表达式的使用
- php中curl模拟浏览器来传输数据
- 线程常用操作
- bzoj 1415: [Noi2005]聪聪和可可
- java 找出数组中只出现一次的数字
- iOS开发学习笔记——文本框(UITextField)
- bzoj1857: [Scoi2010]传送带
- Android ORM 数据库的使用
- python 模块 chardet下载方法及介绍
- Android从图库选择照片
- Java反射——动态加载类
- stl之deque双端队列容器