我一直在阅读维基百科(名称解析WIKI)中的"名称解析",并且已经给出了C++使用"静态名称解析".如果这是真的那么我无法弄清楚C++如何在不使用动态名称解析的情况下设法提供"多态".
任何人都可以回答C++是否使用"静态名称解析"或"动态名称解析".如果它是静态的,你还可以解释C++如何提供多态性.
维基百科对名称解析的定义是关于如何将标记解析为构造的名称(函数,类型名等).鉴于该定义,C++ 的名称解析是100%静态的.表示标识符的每个标记必须在编译时与特定实体相关联.
C++多态性实际上是在欺骗.编译器可以看到静态名称解析为使用virtual
关键字定义的成员函数.如果编译器发现您正在调用此对象的对象是动态对象(即:指向该类型的指针/引用而不是该类型的值),则编译器会发出特殊代码来调用该函数.
此特殊代码不会更改它解析的名称.它改变的是最终被调用的函数.那不是动态命名; 那就是动态函数调度.名称在编译时解析; 该函数在运行时得到解析.