C++对象如何保存有关其成员函数的信息

dei*_*mus 3 c++ oop object member-functions

class A {
       public :
       void printSometext() {
       std::cout << "printing A" << std::endl;
       }
    };
class B {
       public : 
       void printSometext() {
       std::cout << "printing B" << std::endl;
       }
    };

int main() {
   A* a = new A();
   a->printSometext();
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

C++对象如何保存有关其成员函数的信息.让我们考虑上面的代码.当我在对象"a"上调用printSometext时,它如何知道要调用的函数以及它如何找到正确的方法.打印对象的大小时,它会打印其成员变量的总和大小(+ allignments).因此,请提供一些内部信息,了解成员函数调用的方式.

谢谢,Deimus

Ash*_*sha 7

你已经弄错了C++编程的基础知识.在运行时a不知道printSomeText,编译器和链接器将上面的代码转换为执行这些任务的二进制代码.在运行时,只有一堆指令.

  • 我不会说"编程的基础" - 一些语言根据他们存储的关于方法的信息来进行调用.如果调用是虚拟的,C++使用vtables来进行后期绑定.但是,是的,在这种情况下 - 编译器可以解析对硬编码地址的简单调用的调用. (8认同)