CPP複習總結

2021-08-26 06:31:30 字數 3132 閱讀 2986

1.cstringstrstr strlwr strupr

2.呼叫複製建構函式的幾種情況①乙個新物件被另乙個已經存在的同型別物件用以初始化②當乙個物件作為實參傳遞給函式形參時要呼叫複製建構函式,函式返回時自動呼叫其析構函式③在函式返回乙個物件時呼叫複製建構函式。

3.靜態資料成員初始化:《資料型別》《類名》::《靜態變數》=初始化數值 。 靜態成員函式不能訪問非靜態資料成員。靜態函式沒有this指標。

4.常物件成員①const是函式型別的乙個組成部分,因此在實現部分也要帶上const②常成員函式不能更新物件的資料成員,也不能呼叫該類中沒有用const修士的成員函式。③如果講乙個物件說明為常物件,則通過該物件只能呼叫它的常成員函式,不能呼叫其他的成員函式。④const關鍵字可以參與區分過載函式。⑤常成員資料只能在建構函式初始化列表中對其初始化。

5.宣告友元:只需要在類中任何位置新增宣告即可①friend 《資料型別》 《友元函式名》 (形參表) ;② friend class 《類名》

6.c++不允許初始化乙個物件陣列。

7.構造函式呼叫次序①虛基類的建構函式②積累的建構函式③派生類中成員物件的建構函式④派生類的建構函式。 《派生類名》::《派生類名》(《總參數列》):《基類名》(《參數列1>),《基類名》(《參數列2>)……《基類名》(《參數列n>),《成員物件名》(《參數列n+1>),《成員物件名》(《參數列n+2>)……《成員物件名》(《參數列n+m>)

8.虛繼承。class《類名》:virtual 《繼承方式》《基類名》 引入虛基類後,無論該虛基類被繼承多少次,在最終的派生類中都只有它的乙份備份。

9.純虛函式和抽象類: virtual 《型別》《函式名》(《參數列》) = 0 ; 擁有純虛函式的類就是抽象類,抽象類不能殘生類得例項。

10.乙個類的物件可以作為另乙個類的成員,乙個類的物件不能作為在自身類的成員,乙個類的指標或引用可以作為自身類的成員

11.區域性類:定義在函式體內的類叫區域性類。巢狀類:在乙個類中定義的類稱為巢狀類;

12.什麼是虛繼承:就是當有菱形繼承的時候,只儲存基類的乙個副本。

13.定位new:x *p = new(buf)x; new = malloc + 建構函式

14.拷貝建構函式《類名》::《類名》(const 《類名》&《引用名》 ).

15.直接用拷貝建構函式要比用賦值的方式在效率上高很多。因為賦值的方式要先呼叫建構函式,再呼叫賦值函式。ctest b= a //類的拷貝構造

16.ctest c ; c = a ; //類的賦值ctest d(a) //類的拷貝構造

17.「成員初始化表」比「成員賦值」更優,因為前者呼叫的是類的拷貝建構函式,後者呼叫的是類的賦值操作。

18.繼承的二義性,需要用::操作符來確定呼叫的是那個父類的函式

19.棧:通常是用於那些在編譯期間就能確定儲存大小的儲存區,用於在函式作用域內建立,在離開作用域後自動銷毀的變數的儲存區。堆:通常用於那些再編譯期間不能確定儲存大小的變數儲存區,由malloc分配,free釋放。常量儲存區,全域性、靜態的儲存區通常用於那些再編譯期間就能確定儲存大小的儲存區,在整個程式執行期間都可見。

20.預處理:檔案包含,巨集替換,條件編譯,布局控制。#progma once能保證標頭檔案被編譯一次。

21.inline函式的好處:節省函式呼叫,引數傳遞,控制權轉移等開銷。extern「c」就是告訴編譯器用c語言的規則去編譯呼叫函式。

22.定位new。(不分配記憶體)在已經分配了的記憶體上再來構建類物件。

如:char *buf =new char[1024];

x *p = new (buf) x;

#include

#include

#include

#include

#include

using namespace std;

int main()

for(vector::iterator ix = v.begin() ; ix!= v.end() ; ix++)

cout << *ix << "\t" ;

cout << endl ;

reverse(v.begin(), v.end());

for(vector::iterator ix = v.begin() ; ix!= v.end() ; ix++)

cout << *ix << "\t" ;

cout << endl ;

sort(v.begin(), v.end());

for(vector::iterator ix = v.begin() ; ix!= v.end() ; ix++)

cout << *ix << "\t" ;

cout << endl ;

string:

已知string的原型為:

class string {

public:

string ( const char *str );

string(const string &s);

~string();

string & oprator = (const string &s );

private:

char *m_data;

string::string(const char *str){

if(str){

m_data = new char[strlen(p)+1];

strcpy(m_data ,str);

else

m_data = new char[1];

*m_data =』\0』;

string::~string(void){

delete m_data;

string::string(const string &other){

m_data = new char [ strlen(other)+1];

strcpy(m_data , other.m_data);

string & string::operate = (const string &other){

if(this == &other){

return *this;

delete m_data;

m_data = newchar[strlen(other.m_data)+1];

strcpy(m-data , other.m_data);

return *this;

CPP 複習 記錄

1.bool bool temp 0 cout temp temp 0 bool temp 1 cout temp output is 1 if temp 0,temp temp 1 2.static cast value static cast 98 is b 3.vc microsoft vc ...

cpp排序演算法總結

注意 快排是不穩定排序 思路 選基數,雙指標移動 交換,分治 示例 坐在馬桶上看演算法 快速排序 51cto.com 快速排序 三種演算法實現和非遞迴實現 csdn部落格 第一輪 i j 6 1 2 7 9 3 4 5 10 8 基數 x 6 先從 j 往前遍歷 j 遇到小於 x 的數停下,再從 i...

cpp中sizeof的總結

測量普通變數 被測量value char 1short 2int 4double8陣列 陣列內容個數 1 結尾有 0 傳入函式的陣列 4,是乙個指標,指向這個陣列 測量類物件 被測量value空1 char 1,位元組對齊 short 2,位元組對齊 int4,位元組對齊 double 8,位元組對...