面试官问了我这个问题,不确定我的回答是否足够好。有人有什么想法吗?
问问题
127 次
2 回答
0
我不能说我非常了解这一点,但Ian Lance Taylor 的这篇博客文章似乎有答案。从那里引用:
使用 C++ 时有一些特殊的挑战。向类中添加新的虚拟方法可能是对使用该类的任何函数的 ABI 更改。在这种情况下提供类的向后兼容版本是非常尴尬的——没有自然的方法来指定用于虚拟表的名称和版本或旧版本的 RTTI 信息。
当然,您绝不能删除任何符号。
阅读条目以获取更多上下文。(ABI = 应用程序二进制接口)
于 2012-11-22T01:53:04.420 回答
0
我脑海中蹦出的第一个念头就是名字改写。在 C++ 中但不是在 C 中,您可以有两个名称相同但参数不同的方法。编译器必须区分这两种方法,从而在内部更改(修改)名称。
C++ 编译器必须在非 C 语言中做的另一件事是处理类继承。你有抽象类、重写方法和虚拟方法。这需要更多处理才能解决。
于 2012-11-22T01:53:52.460 回答