(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...