没有定义的函数声明

Sta*_*owl 4 c++ declaration function definition c++11

以下代码将根据 cppquiz.org 进行编译并具有确定性(问题 #30)

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

int main() { X x(); }
Run Code Online (Sandbox Code Playgroud)

程序的输出什么都不是,因为

X x();
Run Code Online (Sandbox Code Playgroud)

是一个函数声明。

但是我仍然想知道为什么这个会编译,尽管这个声明从未在任何地方定义过?

Pau*_*ans 5

由于x()从未被调用,因此没有任何可链接的内容,因此链接器不会出现未定义的错误。它仅被声明为不带参数并返回X:的函数X x();