對於既需要共享、又需要防止改變的資料應該宣告為常型別(用const進行修飾)。
對於不改變物件狀態的成員函式應該宣告為常函式。
1、常物件:必須進行初始化,不能被更新。
const 類名 物件名
2、常成員:用const進行修飾的類成員(常資料成員和常函式成員)
3、常引用:被引用的物件不能被更新。
const 型別說明符 & 引用名
4、常陣列:陣列元素不能被更新(後面學習)
型別說明符 const 陣列名[大小]
5、常指標:指向常量的指標(後面會學習)
用const修飾的物件,例如:
class a
...private:
int x,y;
};a const a(3,4); //a是常物件,不能被更新
用const修飾的物件成員。
常成員函式:使用const關鍵字說明的函式;常成員函式不更新物件的資料成員;常成員函式的說明格式如下:
型別說明符 函式名 (參數列) const;
這裡,const是函式型別的乙個組成部分,因此在實現部分也要帶const關鍵字。
const關鍵字可以被用於參與對過載函式的區分。
通過常物件只能呼叫它的常成員函式。
常資料成員:使用const說明的資料成員,例如:
#includeusing namespace std;
class r
void print();
void print() const;
private:
int r1, r2;};
void r::print()
void r::print() const
int main()
常資料成員舉例:
#include using namespace std;
class a ;
const int a::b=10;
a::a(int i) : a(i)
void a::print()
int getx()
int gety()
friend float dist(const point &p1,const point &p2);
private: //私有資料成員
int x, y;
};float dist(const point &p1, const point &p2)
int main()
單選題:
下列關於常成員的說法不正確的是哪乙個?
1、常資料成員必須進行初始化,並且不能被更新。
2、常資料成員可以在定義時直接初始化(c++11)
3、常成員函式不可以被非常數物件呼叫。
4、常資料成員通過建構函式的成員初始列表進行初始化。
正確答案:3.
C 學習之資料的共享與保護
作用域是乙個識別符號在程式正文中有效的區域。作用域分類 1 函式原型作用域 2 區域性作用域 塊作用域 3 類作用域。4 檔案作用域。5 命名空間作用域 後面會學習 函式原型中的引數,其作用域始於 結束於 例如 double area double radius 函式的形參 在塊中宣告的識別符號。其...
共享資料的保護
一 常物件 1 常物件 它的資料成員值在物件的整個生存期間內不能被改變 也就 是說,常物件必須初始化,而且不能被更新 宣告常物件的語法形式 const 型別說明符 物件名 例如 class a private int x int y const a a 1,2 a是常物件,不能被更新 二 用cons...
c 共享資料的保護知識要點
include using namespace std class r 建構函式及其初始化 void print void print const private int r1,r2 void r print void r print const intmain include using name...