gpt4 book ai didi

c++ - C++ 使用静态名称解析还是动态名称解析?

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:52 24 4
gpt4 key购买 nike

我一直在 wikipedia ( Name resolution WIKI ) 中阅读有关“名称解析”的内容,并且已经给出了 C++ 使用“静态名称解析”的信息。如果这是真的,那么我无法弄清楚 C++ 如何在不使用动态名称解析的情况下设法提供“多态性”。

谁能回答 C++ 使用“静态名称解析”还是“动态名称解析”。如果是静态的,能不能也解释一下C++是如何提供多态性的。

最佳答案

维基百科对名称解析的定义是关于如何将标记解析为结构名称(函数、类型名称等)。根据该定义,C++ 的名称解析是 100% static 的。表示标识符的每个标记都必须在编译时与特定实体相关联。

C++ 多态性实际上是在作弊。编译器可以看到静态名称解析为使用 virtual 关键字定义的成员函数。如果编译器发现您调用它的对象是一个动态对象(即:指向该类型的指针/引用而不是该类型的值),编译器会发出特殊代码来调用该函数。

此特殊代码不会更改它解析的名称。它改变的是最终被调用的函数。那不是动态命名;这是动态函数 dispatch。该名称在编译时得到解析;该函数在运行时得到解析。

关于c++ - C++ 使用静态名称解析还是动态名称解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34297034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com