主要是cmake示例,其中使用的C源码尝试实现了面向对象的思想。
Go to file
2024-09-01 16:54:38 +08:00
src 测试动态库成功了,但是对于寻找路径的方式我没太懂。 2023-12-25 13:55:24 +08:00
test C语言实现面向对象 2024-09-01 02:07:04 +08:00
.gitignore 合并本地和远程分支 2023-12-25 15:26:04 +08:00
CMakelists.txt 如果只是这样实现,那么无法多态。即给父类赋值子类,然后调用父类,实测还是调用的父类接口。因此添加虚函数表 2024-09-01 03:22:37 +08:00
config.h.in 1.配置安装路径 2023-12-25 13:22:24 +08:00
LICENSE Initial commit 2023-12-25 05:59:24 +00:00
License.txt 测试动态库成功了,但是对于寻找路径的方式我没太懂。 2023-12-25 13:55:24 +08:00
main.c 多态测试通过 2024-09-01 16:54:38 +08:00
mk.bat 如果只是这样实现,那么无法多态。即给父类赋值子类,然后调用父类,实测还是调用的父类接口。因此添加虚函数表 2024-09-01 03:22:37 +08:00
README.md 多态测试通过 2024-09-01 16:54:38 +08:00

cmake_demo

CMAKE

多态

多态的本质

同样的接口,可以即实现父类的功能,也可以实现子类的功能。主要看传参的类型。

C语言实现思路 因为语法不支持,因此采用特殊的方式来实现。

类型 实现方式 弊端 问题举例
匿名结构体 指针 多重继承,成员可能冲突 B->A, C->A, D->B,D->C
虚函数表 指针 子类父类必须将虚表放在结构体最开头,且不支持多继承下的多态
虚函数多参数 指针 继承的父类无顺序强制要求,且可以多继承。但类方法参数变多。多继承需要人为注意是调用了其他类还是继承了其他类