系統學習C (4)

2021-08-08 08:23:10 字數 1808 閱讀 3270

(1) 子類建立物件時

當從父類派生乙個子類並宣告乙個子類的物件時,它將先呼叫父類的建構函式,然後呼叫當前類的建構函式來建立物件;在釋放子類物件時,先呼叫的是當前類的析構函式,然後是父類的析構函式

下面簡單用程式展示這一點:

father.h

#include 

using

namespace

std;

class father

};

main.cpp

#include "father.h"

int main()

執行結果:

(2) 定義乙個基類型別的指標,呼叫子類的建構函式為其構建物件,當釋放物件時,如果析構函式是虛函式,則先呼叫子類的析構函式,然後再呼叫父類的析構函式;如果不是析構函式,則只呼叫父類的析構函式。

含有虛函式的情況:

#include 

using

namespace

std;

class father

};

#include "father.h"

int main()

執行結果:

沒有虛函式的情況:

#include 

using

namespace

std;

class father

};

執行結果:

練習:

開發乙個程式,定義乙個類,包含「商品」和「售價」兩個成員變數,要求過載運算子"

#include 

using

namespace

std;

class buy

buy(int m1,float m2)

};int main()

{ buy b1(2,20.7);

cout

<< b1執行結果:

總結:此處使用友元,因為過載輸出運算子第乙個形參必須是ostream類,而成員函式的第乙個形參是預設的(this指標),而本類又需要用到ostream類中屬性,則需要friend。過載輸入運算子也是同理。

同時,一般對於過載輸出運算子,第二個形參一般是const,因為輸出的乙個類不需要更改它;

exp: ostream & operator << (ostream& out, const classt& obj)

而過載輸入運算子的第二個形參,則必須是非const,否則無法賦值。

exp: istream & operator >> (istream& in, classt& obj )

C 系統學習 陣列

與vector的異同相同 都是存放型別相同物件的容器不同 陣列的大小確定不變,不能隨意向陣列中增加元素 1 定義和初始化內建陣列 陣列中元素的個數也屬於陣列型別的一部分,編譯的時候維度應該是已知的,也就是說,維度必須是乙個常量表示式。預設情況下,陣列的元素被預設初始化。note 定義陣列的時候必須制...

C 4道簡單小題

1,成績等級,用switch來實現。include int main return 0 2,輸出陣列中小於平均數的數 include int main for int i 1 i n i 3,1.定義函式double findradius double c 根據周長求出圓的半徑 2.定義函式doub...

堅持c ,真正掌握c (4)

首先,類可以說是c 的靈魂,正因為c 中有類的出現,提高了 的復用率,實現了真正的物件導向的程式設計,我們可以使用別人編寫設計的類,只要我們知道這個類的成員函式和成員資料,我們就可以使用這個類而不必去考慮這個類的實現方式。c 中就存在著很多這樣的類,最經典的莫過於微軟自己開發的windows介面庫m...