c++多态解释
在基类中使用虚函数的时候,空类占一个字节,空类中有虚函数有四个字节,也就是说明虚函数在空类中加入了一个指针对象
这个指针叫vfptr,virtual function ptr,虚函数表指针,指向的是虚函数表vftable,就像之前提的那样,这个虚函数表中保存的是当前这个虚函数的地址。
当从基类生成子类时,也会继承这个虚函数表,但是如果发生了重写,那个这个虚函数表中的内容会被替换成子类的虚函数的地址,而基类的虚函数表的内容不变
因此,当父类的指针或者引用指向子类对象时,就发生了这一多态
human &h = people,此时调运虚函数时,调用的是people这个对象,所以调用的是people中的这个重写的函数,如果是拷贝赋值的话就没用了,因为拷贝赋值的时候是直接创建一个新的对象,且中间可能出现数据转换。
一个接口,对应多个函数,这就是多态,通过多态可以规范化代码,方便不改源代码的同时增加或删除功能
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)