C++菜鸟进阶—>什么时候使用继承和组合
2018-03-23 15:04
288 查看
1. 什么时候使用单基继承?
答:首先我们来了解什么是单基继承,单基继承就是一个基类单方向的派生出另一个类,比如:基类A,派生类B,A--->B。所以当我们现在所写的类中需要完整继承一个类并且此类已经足够完成我们代码所需,就可以用单基,且单基是最常见的继承方式了。当构造时先创建基类A,再创建B,析构相反,先析构B再析构A。
2. 什么时候使用多基继承?
答:多基继承是指一个类同时继承于两个及以上的类,比如:有一个类A,有一个类B,现在创建一个类C,用C同时继承A和B,这样写:class C:pubic A,public B 当构造时先创建基类A,再创建B,最后创建C,这里顾虑是按照你写的继承顺序,此处我是publicA,publicB;析构相反,C->B->A。(这里public继承我后面会讲到)
3. 什么时候组合,继承和组合的区别是什么?
答:什么是组合,两个及以上相互独立的类能够放在一起,然后通过一个类就可以调用另一个类的对象从而调用另一个类的功能。怎么说呢,就比如:一台电脑computer和一台打印机DaYinJi两个独立的类,computer有显示、算数,DaYinJi有打印功能,当组合在一起后,对于computer类就可以调用打印机的打印功能。举例代码:
class DaYinJi{
public:
int a;
void DaYin();
}
class computer{//别忘了打印机的头文件
public:
DaYinJi D;//你看这里有打印机对象
int b;
void show();
void count();
}
int main(){
computer com;
(com.D).DaYin();//电脑类对象调用了它的成员变量打印机对象,由打印机对象就可以调用打印机的成员函数
return 0;
}
那么为什么说要两个及以上独立的类才能组合呢,举个例子,比如CPU和computer的关系,computer不能没有CPU,没有CPU那还能是computer吗,你可能会说CPU不就是组装在computer 里的吗,但是请注意,你可以理解为computer继承了CPU的特性,就不能说CPU和computer组合,有位老先生告诉我:“在实际开发过程中,多用组合,少用继承”。
4.修饰继承方式时,什么时候使用public,protected或private?
对于此问题,我列出了一个表:
public 继承:
protected 继承:
private 继承:
可能你已经看出来了,凡是基类private权限继承后继承类时不可调用的,public继承下来的继承权限不变,protected和private继承后基类会变成相对应得权限。请注意,当继承类调用的时候此时的权限是被调用的权限。这句话细细揣摩一下。
以上是我发的第一篇博客,有啥不对的地方欢迎各位大牛批评指正,我就是一菜鸟,正在C++这条康庄大道上微微前行。
答:首先我们来了解什么是单基继承,单基继承就是一个基类单方向的派生出另一个类,比如:基类A,派生类B,A--->B。所以当我们现在所写的类中需要完整继承一个类并且此类已经足够完成我们代码所需,就可以用单基,且单基是最常见的继承方式了。当构造时先创建基类A,再创建B,析构相反,先析构B再析构A。
2. 什么时候使用多基继承?
答:多基继承是指一个类同时继承于两个及以上的类,比如:有一个类A,有一个类B,现在创建一个类C,用C同时继承A和B,这样写:class C:pubic A,public B 当构造时先创建基类A,再创建B,最后创建C,这里顾虑是按照你写的继承顺序,此处我是publicA,publicB;析构相反,C->B->A。(这里public继承我后面会讲到)
3. 什么时候组合,继承和组合的区别是什么?
答:什么是组合,两个及以上相互独立的类能够放在一起,然后通过一个类就可以调用另一个类的对象从而调用另一个类的功能。怎么说呢,就比如:一台电脑computer和一台打印机DaYinJi两个独立的类,computer有显示、算数,DaYinJi有打印功能,当组合在一起后,对于computer类就可以调用打印机的打印功能。举例代码:
class DaYinJi{
public:
int a;
void DaYin();
}
class computer{//别忘了打印机的头文件
public:
DaYinJi D;//你看这里有打印机对象
int b;
void show();
void count();
}
int main(){
computer com;
(com.D).DaYin();//电脑类对象调用了它的成员变量打印机对象,由打印机对象就可以调用打印机的成员函数
return 0;
}
那么为什么说要两个及以上独立的类才能组合呢,举个例子,比如CPU和computer的关系,computer不能没有CPU,没有CPU那还能是computer吗,你可能会说CPU不就是组装在computer 里的吗,但是请注意,你可以理解为computer继承了CPU的特性,就不能说CPU和computer组合,有位老先生告诉我:“在实际开发过程中,多用组合,少用继承”。
4.修饰继承方式时,什么时候使用public,protected或private?
对于此问题,我列出了一个表:
public 继承:
基类 | private | protected | public |
继承类 | protected | public |
基类 | private | protected | public |
继承类 | protected | protected |
基类 | private | protected | public |
继承类 | private | private |
以上是我发的第一篇博客,有啥不对的地方欢迎各位大牛批评指正,我就是一菜鸟,正在C++这条康庄大道上微微前行。
相关文章推荐
- C++ 友元、组合、继承的简单使用
- 《读java编程思想》 c++与java的不同(C++进阶 继承 组合 多态)
- C++中的继承和组合区别使用
- C++菜鸟进阶——>关于重载、隐藏和重写
- C++菜鸟进阶——>指针、引用和构造函数初始化
- <转>C++继承中虚函数的使用
- C++中的继承和组合区别使用
- 『C/C++』C++中的继承和组合区别使用
- C++中的继承和组合区别使用
- C++中的继承和组合区别使用
- C++进阶—>Win32 多线程的创建方法和基本使用
- C++中的继承和组合区别使用
- C++中的继承和组合区别使用
- C++中的继承和组合区别使用
- C++箴言:谨慎使用私有继承
- 面向对象的设计法则(1)——优先使用(对象)组合,而非(类)继承
- C++箴言:谨慎使用私有继承
- 高质量C++/C编程指南 -- 第10章 类的继承与组合
- C++学习笔记――继承和组合
- 设计模式----优先使用对象组合,而非类继承