[英]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.