簡體   English   中英

沒有定義的函數聲明

[英]function declaration without definition

以下代碼將根據cppquiz.org進行編譯,並具有確定性(問題#30)

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

int main() { X x(); }

程序的輸出為空,因為

X x();

是一個函數聲明。

但是我仍然想知道為什么盡管在任何地方都沒有定義此聲明,但是為什么會編譯呢?

由於從未調用過x() ,因此無需鏈接,因此鏈接器不會出現未定義的錯誤。 它僅聲明為不帶任何參數並返回X的函數: X x();

X x(); 本身是聲明(原型),而不是函數調用。 如果在看到其聲明之前進行了函數調用,則它將無法編譯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM