面试官问我这个问题,不确定我对它的回答是否足够好。有人有什么想法吗?
答案 0 :(得分:0)
我不能说我理解得很清楚,但这blog entry by Ian Lance Taylor似乎有一个答案。引自那里:
使用C ++时存在一些特殊的挑战。向类添加新的虚方法可以是对使用该类的任何函数的ABI更改。在这种情况下提供类的向后兼容版本非常尴尬 - 没有自然的方法来指定用于虚拟表的名称和版本或旧版本的RTTI信息。
当然,您绝不能删除任何符号。
阅读条目以获取更多背景信息。 (ABI =应用程序二进制接口)
答案 1 :(得分:0)
在我脑海中突然出现的第一个念头是名字错误。在C ++中但不在C中,您可以使用两个名称相同但参数不同的方法。编译器必须区分这两种方法,从而在内部更改(修改)名称。
C ++编译器必须在C中编写的另一件事是处理类继承。您有抽象类,重写方法和虚方法。这需要更多的处理来解决。