C++中的類成員初始化問題----const、引用變數
阿新 • • 發佈:2018-12-22
Introduction
在C++程式碼中,變數的宣告和賦值是兩個過程。宣告是給變數分配記憶體,賦值是給記憶體賦值(即給變數賦值)。在宣告的過程中同時給變數賦值叫做初始化,但是初始化的賦值和普通的賦值在C++編譯器看來是不一樣的。
const型別的變數不能進行賦值,只能初始化。引用型別的變數也是一樣。
Problem
1.error C2734:'b': const object must be initialied if not extern
2.error C2530:'c': references must be initialized
3.error C2758:'A::_b': must be initialized in constructor base/member initializer list
4.error C2166: I-value specifies const object
Solution
1.const型別的變數不能賦值,只能初始化
宣告時賦值叫初始化,聲明後賦值叫賦值(就是這麼順口唄= =)
2.引用型別的變數不能賦值,只能初始化
一般函式中的變數初始化可以用等號‘=’也可以用括號‘()’ —— const int b(5); int& c(a);
3.類成員變數在呼叫建構函式時必須初始化
也是const型別和引用型別。C++中給類成員初始化的唯一方式就是成員初始化列表,也就是建構函式後面跟冒號的形式
4.不能對const變數進行賦值
Summary
變數的使用過程:1、分配內初[初始化資料]
2、賦值
步驟1是宣告,中括號中的內容對於一些型別的變數可有可無,但是對於const型別和引用型別的變數必須有,因為它們不能進行第二步。
本質上,初始化就是在給變數分配記憶體的時候“賦值”。