在C++中仅声明未实现且未调用的函数是否合法?
在C++中仅声明未实现且未被调用的函数是否合法?
这种情况是完全合法的。
C++标准允许仅声明函数而不提供对应的实现,只要该函数在整个程序中从未被调用(包括显式调用、隐式调用,比如作为虚函数被实例化调用等场景)。在测试代码里,unused函数只有声明没有定义,但因为它没有被任何代码调用,编译器不会生成对它的引用,链接器也就不需要去寻找它的实现,因此整个程序可以正常编译、链接并运行。
反过来,如果这个仅声明的函数被调用了,链接器就会抛出“未定义引用”的错误,因为无法找到对应的函数实现——只有当函数被实际使用时,链接器才会要求该函数必须存在定义。
测试代码如下:
#include <iostream> int foo(int(a)){ std::cout << a << std::endl; return a; }; int unused(int(a)); int main() { foo(1); return 1; }
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

