《C++總結3》
派生類
Class student1:public student //表示公用繼承,默認為私有的
{ public :
……
……
}
繼承的時候一定是全部繼承來,但是可以自己設定訪問屬性,或是覆蓋父成員
一般是抽象基類 構造函數和析構函數不能繼承
基類不能訪問派生類
繼承方式就是對父成員的屬性改造,私有>保護>公有(把兒子也當外人)
不管怎麽樣,父私有的,子都不能繼承和調用
多級派生 常用的是公用繼承
派生類構造函數:
Student1(int n,string nam,char s,int a):student(n,nam,s)
對象中的對象(子對象)
含有子對象的派生類的構造函數:
Student1(int n,string nam,int n1):student(n,nam),monitor(n1,nam1)
{
……//可以為空
}
多層派生的構造函數:
Student2(int n,string nam,int a,int s):student1(n,nam,a)
父和子的構造函數都是可以默認的
多重繼承:
Class D:public A,private B,protected C
{
……
}
多重繼承構造函數:
Graduate(string nam,int a,char s,string t,float sco,float w):
teacher(nam,a,t),student(nam,s,sco),wage(w)
{
……
}
多重繼承會有二義性,引用的時候要指明
虛基類 合開合的思想,第一個合就是虛基類 虛繼承
虛基類:
Class A
{ A(int){ }
……
};
Class B:virtual public A
{
B(int n):A(n)
{
……
}
……
……
};
Class C:virtual public A
{
C(int n):A(n)
{
……
}
……
……
};
Class D:public B,publicC
{D(int n):A(n),B(n),C(n) { }
……
};
*****************
A |
B C D |
E |
*****************//註意D比較特殊
域運算符::
派生類對象可以給基類對象賦值,也可以作為父類對象的引用還有指針
派生類的成員可以是基類的對象 (這其實就是類的組合)
任何的機器,只要是運行應用,界面什麽都是OS控制的,就一定有目標代碼存在,應用一般是完整的匯編代碼。但是產生應用的過程,是要用到專門的工具和平臺,要用到類庫。
任何運行程序都是和OS兼容的,而匯編代碼都是和CPU兼容的,這是計算機核心。
參數類型推導 被覆蓋的依然可以通過域運算符使用
靜態成員
重載(靜態多態)是多提的一種方式之一,還有虛函數(動態多態)
虛函數:在派生類中定義與基類同名字的函數,並且可以通過基類指針或引用來訪問
虛函數就是來避免覆蓋沖突的
靜態關聯(早期關聯) 動態關聯(滯後關聯)//用基類指針對象來訪問
虛析構函數 純虛函數
Virtual int max( )=0;
抽象類 編譯系統會構造虛函數表
類族 標準模板庫STL 標準IO 文件IO 串IO
總體上來說,C++要比C好很多,各有各的優點吧
數據流表示從內存到IO的
IO緩沖區 流類 本質就是對象之間的活動,網社交的活動構成我們時空狀態的變化
頭文件裏的流對象 類庫的接口就是頭文件
Cin流 cerr(特點就是不經過緩沖區) clog流(標準出錯流) 頭文件裏運算符重載
格式控制頭文件iomanip
流對象成員函數 格式標誌
Cout.put(‘a’).put(24); putchar
EOF文件結束 cin.get( ); getline( ) eof( ) peek( ) putback( )
Ignore()
文本文件(字符文件) 二進制文件(字節文件,內部格式文件)
文件流類 輸出文件(接受從內存的數據)
Ofstream outfile; //建立流對象
Outfile.open(“niu.txt”,ios::out);
虛函數的重載性
異質鏈表(指針數組):
Student *stu[100];
類屬參數的函數就是模板函數 類屬是參數化類型
模板是對於數據類型的模板 類模板 函數模板 模板類和模板函數是實例化的
這也是泛型程序設計
模板說明:
Template<typename T> 或者Template<class T>
類屬類型的本質是int float……(前提是要定義好)
類模板就是類的成員裏面的變量屬性的代號
在類外定義函數的時候或者是實例化的時候在有T的地方加上array<t>即可
模板類的友元函數和友元類
標準模板庫STL裏的容器(數據結構集合)container 叠代器
容器:序列容器 關聯容器 容器適配器 近容器
模板向量 構造容器
vector<int> V(10,0);
容器的本質是系統的函數調用
Vector<int> V(10,0); 裏面的數據為容器對象
容器就是數據結構的元素的集合,是一種特殊的類,在調用使用上和類一樣
容器是一個大對象,對象裏面有小元素對象
容器叠代器很有好處(本質是容器指針)
Iterator叠代器 叠代子(本質是指針)
串流對象 string對象 串流本質是內存流
匿名對象 順序索引文件 追加 標識常量 自定義流
二進制文件為隨機存取 流指針
Input.seekg(120);
Infile.seekg(-30,ios::cur);
outfile.seekg(-30,ios::end);
ostream寫指針函數 istream讀指針函數
異常檢測和處理 函數調用錯誤時產生異常,然後調用的人去處理這個異常
拋出異常之後這個函數就終結了,所以就是不喚醒,異常處理像是中斷
Throw拋出 try捕獲 catch處理
Throw niu//niu為異常類型
Try
{
……
}
Catch(參數1)
{
……
}
Catch(參數2)
{
……
}
……
……
異常列表 異常是在函數定義時候定義的
再拋出異常傳遞 構造函數裏的異常處理
圖標 cin cout的重定向 查找分類函數 文本窗口IO函數
命名空間(作用域) 嵌套命名空間
命名空間是來解決名字沖突的 命名空間成員 命名空間是大的特殊的類
無名命名空間 using 標準命名空間std
命名空間比頭文件更大
using namespace std; //std裏有標識符,要避免自己定義的與它的重名
Namespace //無名命名空間
{
Void fun()
{
cout<<”niu”<<end1;
}
} //命名空間成員可以是函數,作用和庫函數一樣
____________________________________________________________________
至此,C++概要總結完畢!
2017 6.9 蘭州 雨
《C++總結3》