類中的數據成員可以是const,但只有它的靜態。否則我們需要一個構造函數來初始化一個類中的常量。在編碼時聲明類中的非靜態常量數據成員是否合適?
can we declare a const data member inside a class? //this was an interview question
在我看來,我們可以,但它是適合程序員在類中聲明常量。
請給出一些解釋/理由,爲什麼我們可以或不可以做?
類中的數據成員可以是const,但只有它的靜態。否則我們需要一個構造函數來初始化一個類中的常量。在編碼時聲明類中的非靜態常量數據成員是否合適?
can we declare a const data member inside a class? //this was an interview question
在我看來,我們可以,但它是適合程序員在類中聲明常量。
請給出一些解釋/理由,爲什麼我們可以或不可以做?
當然,你可以:
struct A
{
A() : a(5)
{
}
const int a;
};
int main()
{
A a;
}
這意味着數據成員,內部結構A不打算改變。
簡答題:您可以在課堂中使用非靜態const
成員。
由於您仍然需要爲其分配一個值,因此唯一允許您進入初始化列表的位置。
而且,如果你的會員真的是不變的話,那麼這樣做總是一個很好的理由。我的意思是,const-correctness主要是一個可選工具來幫助更好的編碼,所以如果你想使用它,你會稍後感謝你自己。如果你不使用它,那麼它並不重要!
確定您是否有一些常量要在您的班級中使用,並且屬於班級。
例如,假設你有一個唯一的ID一些數據類型,ID標識對象的爲此永遠不會改變:
class myData {
cont int ID;
myData(int newID) : ID(newID) {}
}
它是良好的編程習慣這樣做(我的意思是有沒有其他更好的方式)以及如果數據成員是私人的話。 – munish
@munish如果這個數據成員在這個類型的對象的生命週期中不應該改變,那麼可以隨意聲明它爲const。在google上查找「const正確性」 –