mirror of
https://github.com/huihut/interview.git
synced 2024-03-22 13:10:48 +08:00
添加虚函数表只读数据段链接
This commit is contained in:
parent
baf036d9b5
commit
f048ad6068
|
@ -605,12 +605,10 @@ virtual int A() = 0;
|
|||
* 虚函数的类用于 “实作继承”,继承接口的同时也继承了父类的实现。当然大家也可以完成自己的实现。纯虚函数关注的是接口的统一性,实现由子类完成。
|
||||
* 带纯虚函数的类叫虚基类,这种基类不能直接生成对象,而只有被继承,并重写其虚函数后,才能使用。这样的类也叫抽象类。抽象类和大家口头常说的虚基类还是有区别的,在 C# 中用 abstract 定义抽象类,而在 C++ 中有抽象类的概念,但是没有这个关键字。抽象类被继承后,子类可以继续是抽象类,也可以是普通类,而虚基类,是含有纯虚函数的类,它如果被继承,那么子类就必须实现虚基类里面的所有纯虚函数,其子类不能是抽象类。
|
||||
|
||||
|
||||
### 虚函数指针、虚函数表
|
||||
|
||||
* 虚函数指针:在含有虚函数类的对象中,指向虚函数表,在运行时确定。
|
||||
* 虚函数表:在程序只读数据段(`.rodate section`),存放虚函数指针,如果派生类实现了基类的某个虚函数,则在虚表中覆盖原本基类的那个虚函数指针,在编译时根据类的声明创建。
|
||||
|
||||
* 虚函数表:在程序只读数据段(`.rodate section`,见:[目标文件存储结构](#%E7%9B%AE%E6%A0%87%E6%96%87%E4%BB%B6%E5%AD%98%E5%82%A8%E7%BB%93%E6%9E%84)),存放虚函数指针,如果派生类实现了基类的某个虚函数,则在虚表中覆盖原本基类的那个虚函数指针,在编译时根据类的声明创建。
|
||||
|
||||
### 虚继承、虚函数
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user