下面的錯誤了。明白了。
class a {
int b;
int &c; // uninitialized
a(int x)。b(x) {}.
};
下面使用了合成的建構式。為什么下面沒有錯誤?綜合建構式是如何初始化參考的,或者它是否會這樣做?據我所知,參考必須是用戶初始化的。
class a {
int b;
int &c;
};
uj5u.com熱心網友回復:
你的第一個類中的錯誤出現在這里:
a(int x) 。b(x){}。 //錯誤。
這是因為你定義了一個沒有初始化參考成員c的建構式。這是一個不符合格式的建構式,所以編譯器給出了一個錯誤。
在第二個類中,編譯器將合成一個建構式,所以沒有錯誤。然而,該建構式被定義為已洗掉,因此你將無法創建這種型別的物件。
a test1{}; // error
a test2{1, n}; //也出錯(假設n是一個int)。
<解釋一下
所以從本質上講,第一種情況下的錯誤是類的定義格式不對。在第二種情況下,它是一個格式良好的類,但洗掉了建構式,這可能是故意的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/306735.html
標籤:
