初學C 需要著重理解的點

2021-09-11 10:28:48 字數 1881 閱讀 4388

關於const

關於類的建構函式和析構函式

關於類的this指標

操作符的過載,以及過載的限制

c++中的友元

c++的多型

只要類的方法不修改呼叫物件,就將其宣告為const;將const的引用和指標作為形參可以提高**的效率。

void show() const;

void stock::show() const;//

類的建構函式,類的成員函式可以訪問類的私有成員,私有的資料成員對外面的程式是隱藏的。c++中類方法和友元是表達類介面的兩種不同的機制。建構函式就是為了在建立物件的時候,方便給物件進行初始化。

//建構函式有兩個引數的時候,物件的初始化的三種方式

bozo (const char * fname,const char* lname);

bozo bozetta = bozo ("bozetta","biggens");

bozo fufu("fufu","o'dweeb");

bozo *pc = new bozo("popo","le peu");

//乙個引數的時候

bozo (int age);

bozo dribble = bozo;

bozo roon (66);

bozo tubby = 32;

析構函式一般是沒有引數的,物件會在程式的最後自動呼叫析構函式。如果在建構函式中有new,那麼在析構函式中一定要delete,不然會造成嚴重的後果——記憶體洩漏。

有時候成員函式涉及到兩個物件,在這種情況之下需要使用c++ 的this指標。

//類方法的宣告

const stock & topval(const stock &s)const;//句尾的const是保證隱式物件的常性

//類方法的定義

const stock & stock::topval(const stock &s)const

運算子過載,為了使自定義的資料型別,可以和基本資料型別一樣地進行運算,用操作符函式來重新定義。

operator op (argument-list)//操作符函式
過載的限制:

不要返回指向區域性變數或是臨時變數的引用:

class time

{}://返回time型別的物件,將建立的物件拷貝;傳time型別的引用,可以提高效率。

time time::sum(const time &t) const

c++中的友元:友元函式,友元類,友元成員函式。非成員函式想要訪問類的資料成員,可以通過友元函式的形式來訪問,其許可權與類中的成員函式是一致的。

一般來說,要過載"<<"操作符來顯示c_name物件,可以使用乙個友元函式來實現。

ostream & operator <<(ostream &os,const c_name &obj)

c++的多型性:(1)編譯時多型:包括函式名(操作符)的過載.(2)執行時多型:通過派生類和虛函式來實現。

ps:乙個類中,若有乙個純虛函式,那麼它就是個抽象類。抽象類不能例項化(因為抽象類中至少有乙個函式沒有實現),則該基類中的任何派生類都必須自定義實現。「vitual」函式是在執行時候才確定的而不是在編譯的時候確定。

類模板例項化後的產物就是模板類,類模板的使用格式:類名(實際型別)。

c++中的引數傳遞,可以用應用的方式傳遞引數。當把乙個體積較大的物件作為引數傳遞時,使用引用的方式將大大節省傳遞引數的時間,並可以節省儲存引數物件的副本空間。

c++的輸入輸出格式是自由的。struct的預設訪問級別是public,class的預設訪問級別是private。

初學c ,我需要知道的事

答 源 檔案 cpp 也就是你自己編寫的 儲存後就會出現乙個.cpp檔案 目標檔案 obj 是你寫好的源 檔案經過編譯後的檔案,也就是計算機能看得懂的一大堆二進位制 可執行檔案 exe 就是目標檔案經過鏈結器和函式庫檔案 lib 鏈結後生成的檔案,可以直接執行 答 在我看來,是編譯器編譯該程式時的切...

C 需要注意點

11 設定static成員變數初值時,不受任何訪問許可權的束縛。可以再還沒有誕生任何物件的時候就處理static型別成員變數,但首先必須初始化它。2 只要access level允許,任何函式都可以訪問static成員變數。但如果你希望在產生任何object之前就訪問其class的private s...

初學指標的理解

指標和引用的區別 他們都是指位址,並且個人覺得引用是一種 特殊 的位址。他的特殊之處是引用一旦繫結 指向 了某個物件 資料 之後就與這個物件 資料 建立了永久的關聯,直到引用自身滅亡。因為如此所以引用不能操作自身的位址,而指標卻可以。舉例來說 int number1 100 int p p numb...