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