C++ 为什么不实现其中一个函数就可以成功编译?
我想了解类是如何在C++中编译的 为什么下面的代码编译成功?C++ 为什么不实现其中一个函数就可以成功编译?,c++,oop,class,compilation,C++,Oop,Class,Compilation,我想了解类是如何在C++中编译的 为什么下面的代码编译成功?Foo()是否需要实现才能成功编译 class Test{ public: Test() {} int Foo(); }; int main() { Test obj; return 0; } 代码中没有Book()。如果您谈论的是Foo(),那么您永远不会在代码中使用该函数,因此链接器永远不会被问及该函数,并且会因“未定义函数”或类似错误而失败。没有人尝试调用Foo,因此链接器不会抱怨缺少实现,因
Foo()
是否需要实现才能成功编译
class Test{
public:
Test() {}
int Foo();
};
int main()
{
Test obj;
return 0;
}
代码中没有
Book()
。如果您谈论的是Foo()
,那么您永远不会在代码中使用该函数,因此链接器永远不会被问及该函数,并且会因“未定义函数”或类似错误而失败。没有人尝试调用Foo
,因此链接器不会抱怨缺少实现,因为它不需要
如果您编写了
virtualintfoo()代码>,您将看到链接器错误。“编译器如何工作?”——@Bart,等等。。为什么要关闭它?编辑此问题后,它实际上可能很有用,也许应该取消关闭?为什么虚拟会导致错误?有什么变化?@EmAdpres:See@EmAdpres:vtable中需要一个条目。