2017-02-10 96 views
1

有一個具有非默認構造函數的類。在堆棧上創建對象的不同方法

#include <iostream> 

class Foo { 

public: 

    Foo(int a) { std::cout << "Constructor" << std::endl; }; 

} 

那麼默認的構造函數不能被調用:

Foo obj; // compilation error 

非默認構造函數可以inkoved:

Foo obj(1); 

問:

會發生什麼在編譯的以下行中?

Foo obj(); 
+3

【最讓人頭疼的解析](https://en.wikipedia.org/wiki/Most_vexing_parse)。 –

回答

4

您可以創建一個沒有參數的函數原型。

更具體...基本上沒有任何反應

+0

另見「C Forward Declaration」 – awiebe

+2

好的,你說那個函數存在,所以如果你不小心設法調用它並且沒有提供實現,你會得到奇怪的鏈接時錯誤。 – awiebe

+0

當然,但在執行過程中沒有任何反應,沒有構造,沒有堆棧分配,沒有,線路沒有任何影響 – Kupto

相關問題