C 物件導向程式設計

2021-08-15 11:57:51 字數 2216 閱讀 6933

class a 

}class b : public a

}//b的建構函式先由a的建構函式初始化a,然後執行a的建構函式體,接著初始化b,最後執行b的建構函式體

//派生類宣告時,宣告中包含類名但是不包含它的派生列表

class b : public a;//錯誤

class b;//正確

class a; //僅僅宣告了a類

class b : public a //錯誤,a類必須被定義

class

a {}

class

b : public a {}

b b;

a a(b);//實際上,呼叫的是拷貝建構函式,即a::a

(const

a&)a = b;//實際上,呼叫的是拷貝賦值運算子,即a::operator=(const

a&)

class a 

virtual void f3()

}class b : public a

void f3()

}class c : public b

int main()

//輸出結果如下:

/**a's f2 is running.

b's f2 is running.

pointa->f2:a's f2 is running.

a's f3 is running.

b's f3 is running.

pointa->f3: b's f3 is running.

pointa = &a, pointa->f3: a's f3 is running.

*/

class a 

class b : public a

//純虛函式的函式體定義在類的外部

void b::dosomething()

class b : public a

void visit(a& a)

void visit(b& b)

class basea 

class a : public basea

class baseb

int f2(a a)

int f3(a a)

}class b : public baseb

}

struct base ;

struct dervied : base ;

dervied d;

base b;

b.memfcn();//呼叫base::memfcn

d.memfcn(10);//呼叫derived::memfcn

d.memfcn();//錯誤:引數列表為空的memfcn被隱藏了。因為derived定義了乙個名為memfcn的成員,編譯器找到這個名字後,就不再繼續查詢了。

d.base::memfcn();//正確,呼叫base::memfcn

class a 

class b : public a

class base 

class d : public base

//移動基類成員

d(d&& d):base(std::move(d))

}//如果按照如下定義,則拷貝出來的物件會很奇怪:它的base成員被賦予了預設值,而d成員的值則是從其它物件拷貝得來的。

d(const d &d)

//base::operator=(const base&)不會自動呼叫

d & d::operator=(const d &rhs)

class a 

}class b

b(int j):i(j){}

}int main()

/**輸出結果:

the a's creater without parameter is used.

the a's creater without parameter is used.

b.i = 1

b2.i = 2

b.k = 15315 //k的值未定義

*/

c 物件導向程式設計 物件導向

什麼是物件導向 是對現實世界理解和抽象的方法。物件導向程式設計的特點 易維護,易擴充套件,靈活性好,重用 類 對事物的抽象定義,即事物具有的共同特徵和行為。物件 即對類進行例項 類是抽象的,物件是具體的 類的定義 語法 訪問修飾符 class 類名類的成員 包括字段,屬性,方法,常量,事件和索引器等...

C 物件導向程式設計

1.1 類與物件 物件 object 是類 class 的乙個例項 instance 如果將物件比作房子,那麼類就是房子的設計圖紙。所以物件導向程式設計的重點是類的設計,而不是物件的設計。類可以將資料和函式封裝在一起,其中函式表示了類的行為 或稱服務 類提供關鍵字public protected 和...

C 物件導向程式設計

物件導向程式設計 以物件為中心,將資料和方法封裝在一起。三要素 抽象繼承 多型 五個基本原則 單一職責原則 就乙個類而言,應該有且僅有乙個引起它變化的原因。開放 封閉原則 是說軟體實體 類 模組 函式等等 應該可以擴充套件,但是不可修改。黎克特制替換換原則 子類應當可以替換父類並出現在父類能夠出現的...