为什么我可以成功编译而不实现其中一个函数?

时间:2011-11-06 18:58:36

标签: c++ oop class compilation

我想了解如何用C ++编译类。

为什么下面的代码编译成功? Foo()是否需要编译实现才能成功?

class Test{
public:
    Test()  {}
    int Foo();
};

int main()
{
    Test obj;
    return 0;
}

2 个答案:

答案 0 :(得分:7)

没有人试图调用Foo,因此链接器不会抱怨缺少实现,因为它不需要。

如果你写了virtual int Foo();,你会看到一个链接器错误。

答案 1 :(得分:2)

代码中没有Book()。如果您正在讨论Foo(),那么您永远不会在代码中使用该函数,因此链接器永远不会被问及它,并且会因“未定义函数”或类似错误而失败。