没有定义的函数声明

function declaration without definition

本文关键字:函数 声明 定义      更新时间:2023-10-16

下面的代码可以编译,并且根据cppquiz.org(问题#30)

#include <iostream>
struct X {
  X() { std::cout << "X"; }
};
int main() { X x(); }

程序的输出是空的,如

X x();

是函数声明。

但是我仍然想知道为什么这个编译虽然这个声明从来没有定义在任何地方?

由于x()从未被调用,因此没有任何东西可以链接,因此链接器没有错误,它没有定义。它只是声明为一个函数,不接受参数,并返回X: X x();

X x();本身是声明(原型),而不是函数调用。