4、 常對象、常函數(shù) :
(1) 常對象 :只能調(diào)用常函數(shù); const Father p;
(2) 常函數(shù) :成員函數(shù)之后加上const、函數(shù)內(nèi)部不可以修改成員
屬性;
代碼:void func() const{}。
成員函數(shù)后面加const實(shí)質(zhì)是修飾的是this的指向,this指針本身就是指針常量,指向不可以改,值可以改,再加上const之后,全都不可以改。 **注:普通對象也可以訪問常函數(shù)。 **
但是在成員變量前加上mutable,常函數(shù)可以訪問,常對象也可以訪問。
5、 繼承 :
(1)菱形繼承:(虛基類)
一個(gè)動(dòng)物類,一個(gè)馬類,繼承了動(dòng)物類; 同樣,一個(gè)驢類也繼承了動(dòng)物類。 這時(shí),一個(gè)騾子類不僅繼承了馬類,也繼承了驢類,這個(gè)時(shí)候從動(dòng)物類里繼承的數(shù)據(jù)很容易產(chǎn)生二義性,有好多數(shù)據(jù),我們調(diào)用騾子類的時(shí)候到底用哪一個(gè)?
解決方法:在馬類和驢類繼承動(dòng)物類的關(guān)鍵字前加上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碼形式存在計(jì)算機(jī)中;
②二進(jìn)制文件:以二進(jìn)制的形式存在計(jì)算機(jī)中。
操作文件三大類:
①ofstream:寫操作;
②ifstream:讀操作;
③fstream:讀寫操作。
寫文件:
創(chuàng)建文件輸出流對象:ofstream ofs;
打開文件:ofs.open(“文件路徑”,打開方式);
寫數(shù)據(jù):ofs<<”寫入數(shù)據(jù)”;
關(guān)閉文件:ofs.open();
文件打開方式:
Ios::in:讀文件而打開文件;
Ios::out:寫文件而打開文件;
Ios::ate:初始位置:文件尾;
Ios::app:追加方式寫文件;
Ios::trunc:如果文件存在,先刪除,再創(chuàng)建;
Ios::binary:二進(jìn)制方式。
讀文件:(和寫文件基本一致)
7、棧:(先進(jìn)后出)
(1)順序棧:
棧底指針:bottom,元素頂部指針:top; 記錄棧內(nèi)元素個(gè)數(shù)|top-bottom|+1。 如果bottom=top,表示??铡?/p>
(2)鏈棧:
優(yōu)點(diǎn):便于多個(gè)棧共享存儲(chǔ)空間和提高效率,并且不存在棧滿上溢的情況。
8、隊(duì)列:(先進(jìn)先出)
隊(duì)頭:用來刪除數(shù)據(jù),頭指針front(隊(duì)頭元素前一個(gè)位置);
隊(duì)尾:用來插入數(shù)據(jù),尾指針rear(隊(duì)尾最后一個(gè)元素位置);
(1)循環(huán)隊(duì)列:環(huán)狀空間。 元素個(gè)數(shù)=rear(尾指針)-front(頭指針)
(a)rear-front>0,就是循環(huán)隊(duì)列元素個(gè)數(shù);
(b)rear-front<0,需要加上循環(huán)隊(duì)列的容量;
(c)rear-front=0,隊(duì)列為空或者滿。
(2)鏈?zhǔn)疥?duì)列:
頭指針指向隊(duì)頭結(jié)點(diǎn),尾指針指向隊(duì)尾結(jié)點(diǎn)。
隊(duì)空條件:front=rear=NULL。
循環(huán)隊(duì)列采用的是順序存儲(chǔ)結(jié)構(gòu);
一循環(huán)隊(duì)列Q(1:m),初始狀態(tài)為front=rear=m,經(jīng)過一些列操作后,front=30,rear=10.則,按照順序查找下,最壞比較次數(shù)為m-30+10+1=m-19個(gè)元素,比較次數(shù)為m-20。
9、new運(yùn)算符
new運(yùn)算符是在堆區(qū)創(chuàng)建數(shù)據(jù)由程序員手動(dòng)開辟,手動(dòng)釋放。 **new返回的是該數(shù)據(jù)類型的指針。 **
例如:int *p = new int(10);
釋放:delete p;
例如:int *p = new int[10];
釋放:delete []p;
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4366瀏覽量
64034 -
指針
+關(guān)注
關(guān)注
1文章
484瀏覽量
70961 -
C++
+關(guān)注
關(guān)注
22文章
2116瀏覽量
74699 -
變量
+關(guān)注
關(guān)注
0文章
614瀏覽量
28796 -
CONST
+關(guān)注
關(guān)注
0文章
45瀏覽量
8369
發(fā)布評論請先 登錄
【請教】如何進(jìn)階c++、學(xué)習(xí)avr
學(xué)習(xí)C++
學(xué)習(xí)c++的經(jīng)驗(yàn)分享!
如何學(xué)習(xí)C++,如何學(xué)好C++
Linux C/C++ 學(xué)習(xí)路線相關(guān)資料下載
學(xué)習(xí)C++的方法以及C++的就業(yè)方向
C和C++的學(xué)習(xí)過程總結(jié)
C++中類的繼承訪問級別學(xué)習(xí)總結(jié)(二)
Linux C/C++ 學(xué)習(xí)路線

C++學(xué)習(xí)筆記之c++的基本認(rèn)識(shí)
C++學(xué)習(xí)筆記之順序容器
C/C++語言學(xué)習(xí)大全套

評論