[英]Why we cannot initialize the member variable of a class in C++
它給出了錯誤:
#include <iostream>
using std::cout;
class stud
{
int a = 0; // error??
public:
void display();
};
int main()
{
// ...
}
(原因)
從C ++ 11開始,支持帶有默認成員初始化程序的非靜態數據成員。
-
(修復)
如今,許多編譯器都支持C ++ 11。
對於Visual Studio IDE用戶(例如我自己):在項目屬性上:C / C ++>語言> C ++語言標准:設置為C ++ 11或更高版本。 在Visual Studio 2017中,基線支持C ++ 11。
對於非Visual Studio IDE用戶,請搜索主題:“如何啟用C ++ 11”以供您的編譯器使用。
從C ++ 11 開始可以執行此操作。
通過默認成員初始化程序,該成員初始化程序只是成員聲明中包含的花括號或等於初始值設定項,如果在成員初始化程序列表中省略了該成員,則使用該默認值。
class S
{
int n = 7;
std::string s{'a', 'b', 'c'};
S() // copy-initializes n, list-initializes s
{ }
};
在類中,我們通常在私有部分聲明所有變量。 而且我們不在類中初始化它們。 您可以使用構造函數來對其進行初始化。
class stud {
private:
int a;
public:
stud();
};
stud::stud()
{
int a = 5; // initialize here..
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.