4、 常對象、常函數(shù) :
(1) 常對象 :只能調(diào)用常函數(shù); const Father p;
(2) 常函數(shù) :成員函數(shù)之后加上const、函數(shù)內(nèi)部不可以修改成員
屬性;
代碼:void func() const{}。
成員函數(shù)后面加const實質是修飾的是this的指向,this指針本身就是指針常量,指向不可以改,值可以改,再加上const之后,全都不可以改。 **注:普通對象也可以訪問常函數(shù)。 **
但是在成員變量前加上mutable,常函數(shù)可以訪問,常對象也可以訪問。
5、 繼承 :
(1)菱形繼承:(虛基類)
一個動物類,一個馬類,繼承了動物類; 同樣,一個驢類也繼承了動物類。 這時,一個騾子類不僅繼承了馬類,也繼承了驢類,這個時候從動物類里繼承的數(shù)據(jù)很容易產(chǎn)生二義性,有好多數(shù)據(jù),我們調(diào)用騾子類的時候到底用哪一個?
解決方法:在馬類和驢類繼承動物類的關鍵字前加上virtual,使其成為虛基類即可。 數(shù)據(jù)只保存最新賦值那一份。
Class Anmial
{Public:int m_age;};
Class Ma:virtual public Anmial{};
Class Lv:virtual public Anmial{};
Class Luozi{};
6、文件:
C++里對文件操作,包含的頭文件#include。
文件分為兩種:
①文本文件:就是記事本; 以ASCII碼形式存在計算機中;
②二進制文件:以二進制的形式存在計算機中。
操作文件三大類:
①ofstream:寫操作;
②ifstream:讀操作;
③fstream:讀寫操作。
寫文件:
創(chuàng)建文件輸出流對象:ofstream ofs;
打開文件:ofs.open(“文件路徑”,打開方式);
寫數(shù)據(jù):ofs<<”寫入數(shù)據(jù)”;
關閉文件:ofs.open();
文件打開方式:
Ios::in:讀文件而打開文件;
Ios::out:寫文件而打開文件;
Ios::ate:初始位置:文件尾;
Ios::app:追加方式寫文件;
Ios::trunc:如果文件存在,先刪除,再創(chuàng)建;
Ios::binary:二進制方式。
讀文件:(和寫文件基本一致)
7、棧:(先進后出)
(1)順序棧:
棧底指針:bottom,元素頂部指針:top; 記錄棧內(nèi)元素個數(shù)|top-bottom|+1。 如果bottom=top,表示棧空。
(2)鏈棧:
優(yōu)點:便于多個棧共享存儲空間和提高效率,并且不存在棧滿上溢的情況。
8、隊列:(先進先出)
隊頭:用來刪除數(shù)據(jù),頭指針front(隊頭元素前一個位置);
隊尾:用來插入數(shù)據(jù),尾指針rear(隊尾最后一個元素位置);
(1)循環(huán)隊列:環(huán)狀空間。 元素個數(shù)=rear(尾指針)-front(頭指針)
(a)rear-front>0,就是循環(huán)隊列元素個數(shù);
(b)rear-front<0,需要加上循環(huán)隊列的容量;
(c)rear-front=0,隊列為空或者滿。
(2)鏈式隊列:
頭指針指向隊頭結點,尾指針指向隊尾結點。
隊空條件:front=rear=NULL。
循環(huán)隊列采用的是順序存儲結構;
一循環(huán)隊列Q(1:m),初始狀態(tài)為front=rear=m,經(jīng)過一些列操作后,front=30,rear=10.則,按照順序查找下,最壞比較次數(shù)為m-30+10+1=m-19個元素,比較次數(shù)為m-20。
9、new運算符
new運算符是在堆區(qū)創(chuàng)建數(shù)據(jù)由程序員手動開辟,手動釋放。 **new返回的是該數(shù)據(jù)類型的指針。 **
例如:int *p = new int(10);
釋放:delete p;
例如:int *p = new int[10];
釋放:delete []p;
-
函數(shù)
+關注
關注
3文章
4341瀏覽量
62806 -
指針
+關注
關注
1文章
480瀏覽量
70585 -
C++
+關注
關注
22文章
2113瀏覽量
73742 -
變量
+關注
關注
0文章
613瀏覽量
28425 -
CONST
+關注
關注
0文章
45瀏覽量
8178
發(fā)布評論請先 登錄
相關推薦
評論