首页 > 编程语言 > 详细

C++中抽象类和多继承

时间:2017-11-14 19:23:24      阅读:342      评论:0      收藏:0      [点我收藏+]

C++中没有java中接口的概念,但是可以使用抽象类来模拟java中的接口。

工程上的多继承

工程开发中的多继承几乎是不被使用的

多继承带来的代码的复杂性,远远大于其代码带来的便利性。

多继承对代码的维护产生灾难性的后果

在设计上,任何有多继承的地方,都可以用单继承来代替

C++支持多继承,多继承有一个二义性。

面向抽象类编程这种能力需要提升。

函数指针:

函数类型

函数指针类型

定义一个函数指针,指向一个函数的入口地址

函数名称代表函数的入口地址,就是一个函数指针

对于函数名称是否取地址,效果是一样的,这是由于C历史兼容性的原因。

函数指针和数组指针出奇的相似

定义的类型C++编译器不会分配内存,可是如果是直接定义了函数指针,会直接分配内存的。

函数指针做函数参数:

指针做函数函数和函数指针做函数参数:

指针做函数参数的思想,调用任务的人和写任务的人通过函数指针做函数参数解耦合,这是回调函数的本质。

C++中通过多态的机制,在为每个类对象生成一个vptr指针,通过这个vptr指针找到一个虚函数表,通过虚函数表找到了对应执行函数的入口地址,从而实现了多态的扩充。

函数指针做函数的本质,提前进行了一种协议的约定,也就是参数个数和类型,以及参数返回值的类型。只要是满足这种类型指针的协议约定,就可以调用起来。

回调,就是,函数调用底层库,然后底层库在调用你写的代码,这个就是回调。

可以通过调用系统的API函数找到DLL库中的函数的入口地址,当然前提是要将这个DLL文件加载到内存中。

handle记录了函数运行的上下文信息。

底层库提供的是一种机制,而不是一种策略。

句柄的概念和上下文的概念

在底层库分配的内存,需要调用底层库的API进行释放

C++中使用多态解耦合,C语言中使用函数指针来解耦合。

不要轻易的增加接口,

C++中抽象类和多继承

原文:http://www.cnblogs.com/andyniu/p/7833938.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!