簡體   English   中英

什么時候需要默認構造函數?

[英]When do I need a default constructor?

class Test
{
private :
    int i;
public:
    Test(int m)
    {
      i = m;
    }
    void restart(int k)
    {
        Test(k);
    }
};

但是,編譯器(VS17)向我發送錯誤消息,指出“類Test不存在默認構造函數”,但我認為我不需要默認構造函數,因為此類中的所有函數都需要一個int類型參數。

class Test {
// ...
    void restart(int k)
    {
        Test(k);
    }
};

語句Test(k); 聲明類型的變量Test名為k 該變量k通過調用不存在的默認構造函數進行初始化。

我認為我不需要默認的構造函數,因為此類中的所有函數都需要一個int類型參數。

這既不是理由也不是反對擁有/不需要默認構造函數的class

如果您想要在Test::reset()設置Test::i的值,則只需執行以下操作:

class Test
{
private:    
    int i;

public:    
    Test(int m) : i{ m }  // you should use initializer lists instead of 
    {}                    // assignments in the constructors body.

    void restart(int k) { i = k; }
};

暫無
暫無

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

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