您好,登錄后才能下訂單哦!
本篇內容介紹了“C++為什么構造函數中應該做的是初始化而不是賦值”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
初始化明確地表明所做的是初始化而不是賦值,而且可以做得更優美,更有效率。防止“賦值之前使用”的錯誤。
class A { // Good
string s1;
public:
A(czstring p) : s1{p} { } // GOOD: directly construct (and the C-string is explicitly named)
// ...
};
class B { // BAD
string s1;
public:
B(const char* p) { s1 = p; } // BAD: default constructor followed by assignment
// ...
};
class C { // UGLY, aka very bad
int* p;
public:
C() { cout << *p; p = new int{10}; } // accidental use before initialized
// ...
};
相對于那些const char* s,我們應該可以使用gsl::string_span或者(C++17引入的)std::string_view作為表達函數參數怒的更加普遍的方式。
class D { // Good
string s1;
public:
A(string_view v) : s1{v} { } // GOOD: directly construct
// ...
};
“C++為什么構造函數中應該做的是初始化而不是賦值”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。