簡體   English   中英

模板是否需要重載構造函數?

[英]Do templates need overloaded constructors?

我剛看完一些模板視頻,我想我錯過了一些概念。 為什么不調用構造函數,或者為什么在構造函數沒有使用所需的數據類型重載時不創建對象? 由於我正在編寫<int> ,編譯器是否知道我將處理一個int?

template <class T>
class Generic {
    T var;
public:
    Generic(){cout << "ctor called " << endl;}
    //Generic (T v) {var = v;}
};


int main () {

    Generic<int> generic1();

}

我不能創建這樣的對象然后通過setter修改T var的值嗎? 為什么我需要一個重載的構造函數,例如Generic<int> generic1(9);

這是一個最令人煩惱的解析問題。

當然你可以通過默認的構造函數初始化對象,然后通過setter修改值,這里的問題是你沒有定義變量。 Generic<int> generic1(); 是函數聲明,名為generic1 ,不帶參數並返回Generic<int>

你想要的是什么

Generic<int> generic1;

要么

Generic<int> generic1{}; // since C++11

暫無
暫無

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

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