子類的三大件
1.1 子類建構函式中,呼叫父類建構函式,對來自父類的那部分成員進行初始化,再初始化自己擴充套件的成員
1.2 誰的成員,歸誰初始化,子類無需重複完成父類部分的工作
1.3 父類建構函式放在初始化列表
1.4 如果在子類的建構函式中,不顯式的呼叫父類建構函式,將自動呼叫父類的預設建構函式(前提是有預設建構函式)
1.5 如果在子類的建構函式內部,呼叫父類建構函式,會建立乙個區域性的base物件,而子類物件自己的成員並沒有被引數初始化
1.6 析構函式無需引數,在子類的析構函式中,父類的析構函式將被自動呼叫
1.7 在拷貝建構函式裡,也是父類成員歸父類初始化
1.8 構造子類時,先父類後子類;析構子類時,先子類後父類
base.h
#ifndef __c__no805class__base2__
#define __c__no805class__base2__
#include #include using namespace std;
class base2
;#endif /* defined(__c__no805class__base2__) */
base.cpp
#include "base2.h"
base2::base2(int a, char * s)
base2::base2(const base2 & b)
base2::~base2()
cout << "base 析構函式" << endl;
}const base2 & base2::operator = (const base2 & b)
cout << "base 過載賦值運算子" << endl;
return *this;
}void base2::print()
;#endif /* defined(__c__no805class__derived2__) */
derived.cpp
#include "derived2.h"
//子類建構函式中,呼叫父類建構函式,對來自父類的那部分成員進行初始化,再初始化自己擴充套件的成員
//誰的成員,歸誰初始化,子類無需重複完成父類部分的工作
//父類建構函式放在初始化列表
//如果在子類的建構函式中,不顯式的呼叫父類建構函式,將自動呼叫父類的預設建構函式(前提是有預設建構函式)
derived2::derived2(int a, char * s, float x, char * t) : base2(a, s)
//在拷貝建構函式裡,也是父類成員歸父類初始化
derived2::derived2(const derived2 & d) : base2(d)
derived2::~derived2() //析構函式無需引數,在子類的析構函式中,父類的析構函式將被自動呼叫
cout << "derived 析構函式" << endl;
}const derived2 & derived2::operator = (const derived2 & d)
return *this;
}void derived2::printd()
father、son、grandson
father.h
#ifndef __c__no805class__father__
#define __c__no805class__father__
#include using namespace std;
class father
;#endif /* defined(__c__no805class__father__) */
father.cpp
#include "father.h"
father::father(char *n, int *b, int g)
father::father (const father & f)
;#endif /* defined(__c__no805class__son__) */
son.cpp
#include "son.h"
son::son(char *n, int *b, int g, char* a, int *gf, double s) : father(n, b, g)
;#endif /* defined(__c__no805class__grandson__) */
grandson.cpp
#include "grandson.h"
grandson::grandson(char *n, int *b, int g, char* a, int *gf, double s, char *d, int son) : son(n, b, g, a, gf, s)
grandson::grandson (const grandson & g) : son(g)
const grandson & grandson::operator = (const grandson & g)
cout << "grandson過載賦值運算子" << endl;
return *this;
}grandson::~grandson()
cout << "析構grandson" << endl;
}void grandson::print()
main.cpp
#include "grandson.h"
int main()
Python第八節 檔案的操作
1 檔案開啟的格式 file open file name mode buffering 下表為 open 函式支援的檔案開啟模式 模式意義 r唯讀模式開啟檔案,讀檔案內容的指標會放在檔案的開頭。rbr 開啟檔案後,既可以從頭讀取檔案內容,也可以從開頭向檔案中寫入新的內容,寫入的新內容會覆蓋檔案中等...
第八節 企業應用PDM的步驟
第八節 企業應用pdm的步驟 和任何一件事情一樣,企業在應用pdm方面也需要有計畫有步驟地進行。投資pdm軟體的實施應用,對任何乙個企業來說,都不是一件小事情,因此更需要慎重行事。一般來說,企業在應用pdm的基本步驟如下 1 全面認識pdm。企業自身有哪些方面的問題需要解決,企業對pdm系統實施的期...
第八節 Array的遍歷 轉換以及 常規用法
scala var intarray array 1,2,3 intarray array int array 1,2,3 to length 1 scala for i 0 to intarray.length 1 12 3 until 小於length scala for i 0 until i...