在定義類與在類建構式中分配類變數的后果是什么?所有類實體都可以訪問類定義中分配的變數嗎?
實體化賦值示例:
class Foo
{
private:
int x;
double y;
public:
Foo()
{
x = 0;
y = 1.;
}
};
類定義中的賦值示例:
class Foo
{
private:
int x = 0;
double y = 1.;
public:
Foo();
};
編輯:關于所有實體都可以訪問的類成員,我想我正在尋找靜態宣告的概念,我想我只是花括號語言的新手。
uj5u.com熱心網友回復:
在此代碼段中
int x = 0;
double y = 1.;
沒有作業。有初始化。
在此代碼段中
Foo()
{
x = 0;
y = 1.;
}
確實使用了賦值運算子。
一般來說,對于復雜型別的物件,它可能 1)不可能(默認建構式或賦值運算子不可用)或 2)需要很多資源,因為首先呼叫默認建構式來創建物件,然后呼叫賦值運營商。
最好至少定義建構式,例如
Foo() : x( 0 ), y( 1 )
{
}
使用 mem-initializer 串列。
uj5u.com熱心網友回復:
所有類實體都可以訪問類定義中分配的變數嗎?
不!
不同之處在于您默認初始化成員變數,然后在第一種情況下為它們分配值。在第二種情況下,您對它們進行值初始化 - 這是首選。第三個選項,也對它們進行值初始化,是使用成員初始化器串列:
class Foo
{
private:
int x;
double y;
public:
Foo() : x{0}, y{1.}
{
}
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/508348.html
上一篇:避免從庫中覆寫方法
