作用域:是識別符號的有效範圍;
可見性:識別符號是否可以引用的問題
程式執行到某一點。能夠引用到的識別符號,就是該處可見的識別符號。
函式原型的作用域:
函式原型中的引數,其作用域始於
"(",結束於
")"。
例如,設有下列原型宣告:
double area(double radius);(radius 的作用域僅在於此,不能用於程式正文其它地方)
²塊是一對花括號括起來的一段程式單元。
²在塊中宣告的識別符號,其作用域從宣告處開始,直到塊結束的右花括號。
作用域可見性的一般規律:
v 識別符號應宣告在先,引用在後。
v 在同一作用域中,不能宣告同名的識別符號。
v 如果某個識別符號在外層中宣告,且在內層中沒有同一識別符號的宣告,則該識別符號在內層可見。
v 對於兩個巢狀的作用域,如果在內層作用域內宣告了與外層作用域中同名的識別符號,則外層作用域的 識別符號在內層不可見。
物件的生存期:物件從產生到結束的這段時間就是它的生存期。
靜態生存期:
v 靜態物件生存期與程式的執行期相同。
v 在檔案作用域中宣告的物件具有這種生存期。
v 在函式內部宣告靜態生存期物件,要冠以關鍵字static 。
例:static int i;
動態生存期:
v 塊作用域中宣告的物件是動態生存期的物件(習慣稱區域性生存期物件)。
v 開始於程式執行到宣告點時,結束於命名該識別符號的作用域結束處。
具有靜態、動態生存期物件的時鐘程式:
#include
class clock //時鐘類宣告
private: //私有資料成員
int hour,minute,second;
//時鐘類成員函式實現
clock::clock( ) //建構函式
{ hour=0;
minute=0;
second=0;
void clock::settime(int newh, int newm, int news)
{ hour=newh;
minute=newm;
second=news;
void clock::showtime( )
{ coutglobclock,
//具有靜態生存期,檔案作用域
void main( ) //主函式
cout<<"first time output:"globclock:
globclock.showtime( )
; //
物件的成員函式具有類作用域
globclock.settime(8,30,30);
clock myclock(globclock);
//宣告具有塊作用域的物件
myclock
cout<<"second time output:"//引用具有塊作用域的物件
myclock
前面介紹了很多關於c++的概念性的問題,並沒有列舉例子,我個人感覺如果不把基本感念搞懂例子給了也很難理解,**是考驗你對基本概念的理解程度。這個是個比較經典的乙個是時鐘問題,也算是對前面的知識的總結。
讀者可以思考乙個問題,如果你創捷的這個物件的初始化是有你自己設定的,也就是在程式中增加輸入這一功能,該如何實現。
靜態資料成員:
v 乙個類的所有物件具有相同的屬性。
v 類屬性:描述類的所有物件的共同特徵的乙個資料項,對於任何物件例項。它的屬性值是相同的
v 靜態資料成員
n 用關鍵字static宣告
n 該類的所有物件維護該成員的同乙個拷貝
n 必須在類外定義和初始化,用(::)來指明所屬的類。
v靜態成員屬於類,非靜態成員屬於物件。
v靜態成員函式只能引用屬於該類的靜態資料成員或靜態成員函式。
友元:
v 友元是c++提供的一種破壞資料封裝和資料隱藏的機制。
v 通過將乙個模組宣告為另乙個模組的友元,乙個模組能夠引用到另乙個模組中本是被隱藏的資訊。
v 可以使用友元函式和友元類。
v 為了確保資料的完整性,及資料封裝與隱藏的原則,建議盡量不使用或少使用友元。
友元函式:
友元函式是在類宣告中由關鍵字friend修飾說明的非成員函式,在它的函式體中能夠通過物件名訪問
private
和 protected成員
作用:增加靈活性,使程式設計師可以在封裝和快速性方面做合理選擇。
訪問物件中的成員必須通過物件名。
友元成員函式:
乙個類的成員函式可以是另乙個類的友元
即:乙個類的成員函式可以說明為另乙個類的
友元函式,以便通過該成員函式訪問另 乙個類中的成員。
友元類:
v 若乙個類為另乙個類的友元,則此類的所有成員都能訪問對方類的私有成員。
v 宣告語法:將友元類名在另乙個類中使用friend修飾說明。
注意:
一、友元關係是不能傳遞的
二、友元關係是單向的
常型別:
ø常型別的物件必須進行初始化,而且不能被更新。
v常引用:被引用的物件不能被更新。
nconst 型別說明符
&引用名
v常物件:必須進行初始化,不能被更新。
n類名 const 物件名
v常陣列:陣列元素不能被更新(下一章介紹
)。
n型別說明符 const 陣列名[大小
]...
v常指標:指向常量的指標
多檔案結構:
l 乙個源程式一般至少分為三個原始檔:
類宣告檔案(.h檔案)
類實現檔案(.cpp檔案)
類的使用檔案(main( )所在的
.cpp
檔案)
l 利用工程來組合各個檔案。
資料的共享與保護
1.生存期 1 靜態生存期 定義 若物件的生存期與程式的執行期相同,則稱它具有靜態生存期 方式 使用關鍵字static 在命名空間作用域宣告的物件都具有靜態生存期 2 動態生存期 區域性生存期物件誕生於宣告點,結束於宣告所在的塊執行完畢之時。例 變數的生存期與可見性 include using na...
C C 資料的共享與保護
當程式中遇到常量時 如果程式複雜,用到的常量比較多的化,不能很簡單的看出某個常量時用來做什麼的。在實際中應該盡量避免產生這種magic number,可以使用c語言提供的預定義功能 define pi 3.14 auto f double radius 預定義有自己的侷限 比如不能進行型別檢查 更好...
資料的共享與保護(一)
1 作用域 指的是識別符號的有效範圍,乙個識別符號在程式正文中有效的區域 c 作用域 1 函式原型作用域 c 程式中最小的作用域 2 區域性作用域 塊作用域 函式形參列表中形參的作用域,從形參列表中的聲名處開始,到整個函式體結束處為止 函式體內宣告的變數,其作用域從宣告開始,直到宣告所在的塊結束的大...