[英]Assigning a class variable in class definition versus at class instantiation
與在 class 構造函數中定義 class 相比,分配 class 變量的后果是什么? class 定義中分配的變量是否可供所有 class 實例訪問?
實例化賦值示例:
class Foo
{
private:
int x;
double y;
public:
Foo()
{
x = 0;
y = 1.;
}
};
class 定義中的賦值示例:
class Foo
{
private:
int x = 0;
double y = 1.;
public:
Foo();
};
編輯:關於所有實例都可以訪問的 class 成員,我想我正在尋找static聲明的概念,我想我只是花括號語言的新手。
在此代碼段中
int x = 0;
double y = 1.;
沒有作業。 有初始化。
在此代碼段中
Foo()
{
x = 0;
y = 1.;
}
確實使用了賦值運算符。
一般來說,對於復雜類型的對象,它可能 1)不可能(默認構造函數或賦值運算符不可用)或 2)需要很多資源,因為首先調用默認構造函數來創建對象,然后調用賦值運營商。
最好至少定義構造函數,例如
Foo() : x( 0 ), y( 1 )
{
}
使用 mem-initializer 列表。
class 定義中分配的變量是否可供所有 class 實例訪問?
不!
不同之處在於您默認初始化成員變量,然后在第一種情況下為它們分配值。 在第二種情況下,您對它們進行值初始化 - 這是首選。 第三個選項,也對它們進行值初始化,是使用成員初始化器列表:
class Foo
{
private:
int x;
double y;
public:
Foo() : x{0}, y{1.}
{
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.