我想了解如何用C ++编译类。
为什么下面的代码编译成功? Foo()
是否需要编译实现才能成功?
class Test{
public:
Test() {}
int Foo();
};
int main()
{
Test obj;
return 0;
}
答案 0 :(得分:7)
没有人试图调用Foo
,因此链接器不会抱怨缺少实现,因为它不需要。
如果你写了virtual int Foo();
,你会看到一个链接器错误。
答案 1 :(得分:2)
代码中没有Book()
。如果您正在讨论Foo()
,那么您永远不会在代码中使用该函数,因此链接器永远不会被问及它,并且会因“未定义函数”或类似错误而失败。