程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++重要知識點整理-思考

C++重要知識點整理-思考

編輯:C++入門知識

C++重要知識點整理-思考


當你看到標題,有興趣打開本文,那我推測,你應該是准備考“二級C++等級考試”。如果我猜對了,希望在下文對你的考試有所幫助;如果我猜錯了,你不妨也用短暫的時間看看,這在編程實踐中也是需要注意的,你就當復習、加深,找共鳴吧。

(一)構造函數——從最易遇到的問題說起

(1)構造函數的初始化列表

1)構造函數:Point(float a,float b){x=a;y=b;} ①

2)用初始化列表改寫:Point(float a,float b): y(b), x(a){} ②

1.1 上面是同一個構造函數的兩種寫法。其中x、y是提前定義好的變量,a、b是構造函數的參數。

1.2 由①②推廣出Point(float a,float b): y(b){x=a;} 成立 ③

1.3 {}是構造函數體。

1.4 :後面的y(b),x(a)就是所謂的初始化列表。此處有個考點,在構造函數體中,已經初始化的成員,在初始化列表中不可重復初始化;反過來說,在構造函數體中沒有初始化的成員,必須在初始化列表中寫出,並特別注意在初始化列表前需用“:”冒號做分隔和標示。

特注:當x或y是被定義為常數據時,常數據只能用初始化列表進行初始化(②或③的形式)

class Point

{

private:

float x;

const float y;

public:

Point(float a,float b): y(b), x(a){} ’或Point(float a,float b): y(b){x=a;}

’不可錯寫成Point(float a,float b){x=a;y=b}

}

(2)繼承關系下的構造函數的寫法

class Person

{

private:

char name;

int age;

public:

Person(char a,int b):name(a),age(b){}

}

class Student : public Person

{

float score; //默認為(Private)私有成員

public:

Student(char x,int y,float z):Person(x,y),score(z){}

}

大家對比不難發現,這裡的特點是:

(1)派生類(子類)Student的初始化列表中[Person(x,y),score(z)],按照基類的構造函數,將對應參數直接帶給基類中。

(2)再對派生類中新派生的成員逐一初始化,當然,新派生的成員的初始化可以再構造函數體“{}”中,也可以再初始化列表(“:”之後)中。

(二)繼承——易記不易懂(不好理清)

(1)繼承的定義

定義:子類從父類那裡繼承有用的數據成員和成員函數。

(2)繼承的分類

單繼承和多繼承

單繼承:只有一個直接父類,例class A : public B,讀作“類A公有繼承於類B(A為子類,B為父類)”。

多繼承:有兩個及以上多個直接父類,例class A:public B,public C,讀作“類A公有繼承與類B同時公有繼承於類C”(第二個public可省略不寫)。

(3)類成員訪問權限

類成員有三種訪問權限:public(公有的)、private(私有的)、protected(保護的)

class Example

{

private:

? //這裡的成員只能使用於本類,不能被派生類訪問,本類的對象也不能直接訪問

protected:

? //這裡的成員可以被本類和派生類直接訪問,但本類的對象不能直接訪問

public:

? //這裡的成員既可以被本類和派生類直接訪問,也可以被本類的對象直接訪問

};

表 派生模式對繼承成員訪問權限的影響

繼承
方式 基類
public 基類
private 基類
protected 說明 public public private protected 訪問權限不變 private private private private 全部變成私有的 protected protected private protected 公有的變成保護的,其余不變


注:類的對成員的訪問,就是拿來就用,為了避免成員明的沖突,可以使用作用域限制符“: :”。

這裡需要切記一句話:任何類的對象,只能訪問該類的公有成員。

【對這句話的辯證理解是:類實例化(new)的對象,不能直接訪問私有成員(private)和保護成員(protected),而對象對這些成員的使用是通過公有成員函數在類體中操作的。也就是說,如果類裡面的非公有成員通過現有的公有成員函數沒法使用,這時,只能通過修改類裡面的內容,重新建立調用機制來使用。成員包括數據成員(我們常在類中定義的變量或常變量)和成員函數;如果子類與父類是公有繼承的關系,那麼父類的公有成員同時也是子類的公有成員。】

整理一下“訪問”的問題:

成員訪問1)采用:對象名稱.成員名稱 或 引用名.成員名稱 或 指針—>成員名稱。

2)類訪問成員:直接使用“數據成員變量名稱”、“成員函數名稱”進行調用。

(三)推薦和共享

一本好書,能得到適當的點撥,能把簡單的事情簡單化(相對於有的書是,簡單的事情復雜化,弄得讀者一頭霧水,最後結論是這個知識真難),帶領讀者理解自然流暢地獲取知識。再次,推薦一本書《C/C++程序設計實用教程》王大倫,清華大學出版社 2006.

C++是對C的擴展,可以算是一個增強版。本書更多說的是C++,因為,說了C++就包括了C在內,至於不同的地方,有簡單的對比提示,而且不同點實際是很少的。本書不管是用於應試還是當著對這兩門語言的基礎進行加深,都是挺不錯的,因為,其中的知識點規整、明晰,舉例也是很干練的,相當具有代表性。本文中的例子就來自於本書。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved