1. 程式人生 > >C++中的類成員初始化問題----const、引用變數

C++中的類成員初始化問題----const、引用變數

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型別和引用型別的變數必須有,因為它們不能進行第二步。

本質上,初始化就是在給變數分配記憶體的時候“賦值”。