Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么不实现其中一个函数就可以成功编译?_C++_Oop_Class_Compilation - Fatal编程技术网

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,因此链接器不会抱怨缺少实现,因

我想了解类是如何在C++中编译的

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

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

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

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

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


如果您编写了
virtualintfoo(),您将看到链接器错误。

“编译器如何工作?”——@Bart,等等。。为什么要关闭它?编辑此问题后,它实际上可能很有用,也许应该取消关闭?为什么虚拟会导致错误?有什么变化?@EmAdpres:See@EmAdpres:vtable中需要一个条目。