Boolan - C++學習筆記 一 - 第二周

內(nèi)聯(lián)函數(shù)直接在頭文件中定義。

string.h

#ifndef __MYSTRING_

#define __MYSTRING_

#include

class String

{

public:?

? ? ? ? ? string(const char* str = 0){}

? ? ? ? ? String(const String* s) {}

? ? ? ? ? ?String& operator=(const String& s){}

? ? ? ? ? ? ~String(){}

char* Data()const {return this->data;}private:char* data;};

ostream& operator<<(ostream& os,const String& s)

{

? ? ? ? ? ?return os << s.Date();

}

#endif

//Big Three 三巨頭:指的是 帶指針的類的拷貝構(gòu)造函數(shù)、拷貝賦值函數(shù)、析構(gòu)函數(shù)。

淺拷貝:按值拷貝。

深拷貝:按內(nèi)容拷貝,適用于有指針成員的類。

自賦值:a = a;?

內(nèi)存管理:棧、堆

:CPU自動管理。不需要程序員來管。

:操作系統(tǒng)的資源,需要程序員自己申請和自己釋放。不釋放會造成內(nèi)存泄漏。

函數(shù)調(diào)用棧用來防止函數(shù)內(nèi)部局部變量、函數(shù)入口參數(shù)以及函數(shù)返回值等。

//global?

Complex c3(3,4);? data段。

void function()

{

? ? ? ? Complex c1(2,3);

? ? ? ? ?Complex* p = new Complex(1,2);//

? ? ? ? ?delete p;

? ? ? ? ? static Complex c4(3,5);

}

C++ 運算符 new的工作過程:先分配內(nèi)存,然后調(diào)用 構(gòu)造函數(shù)。

Complex* pc = new Complex(1,2);

new 《=等價于=》?

? ? ? ?Complex* pc;

? ? ? ?void * mem = operator new (sizeof(Complex));//內(nèi)部調(diào)用malloc();

? ? ? ?pc = static_cast(mem);pc->Complex::Complex(1,2);


? ? ? ? String* ps = new String("hello");

delete <<=等價于=>>

? ? ? ? 1、先析構(gòu)。String::~String(ps);

? ? ? ? ?2、再釋放內(nèi)存。 operator delete(ps);

?delete[] 必須和 new []對應(yīng)? ? ? 不然會造成內(nèi)存泄漏.

delete? 和 new? 對應(yīng)。

static:類的靜態(tài)數(shù)據(jù)成員,是類的所有對象共享的,它存儲在 內(nèi)存的靜態(tài)數(shù)據(jù)區(qū)域,某一個類的對象修改了static數(shù)據(jù)成員,所有的類的其他對象都可見這種修改。

類的靜態(tài)數(shù)據(jù)成員初始化只能在類外進行,如: int ClassName::m_static_data = 9;這個類似于全局變量的初始化。

類的靜態(tài)函數(shù)沒有this指針,因此只能訪問類的靜態(tài)函數(shù)或靜態(tài)數(shù)據(jù)成員

靜態(tài)函數(shù)可以通過對象.fun_static()來訪問?;蛘咧苯佑?b>類名::fun_static()調(diào)用。

單實例類---設(shè)計模式

模板類:

template Ttemplateclass B

? ? ? {?

?? ? }

模板就是實現(xiàn)代碼重用機制的一種工具,它可以實現(xiàn)類型參數(shù)化,即把類型定義為參數(shù),從而實現(xiàn)了真正的代碼可重用性。

模版可以分為兩類,一個是函數(shù)模版,另外一個是類模版。

模板函數(shù):引數(shù)推導。

運算符重載。

templateT min(T x,T y)

C++標準算法庫:模板函數(shù)。通用算法庫。

命名空間:包裝一下代碼、數(shù)據(jù);便于隱藏,防止重名。

object based? 基于類, 面向?qū)ο蟆?/p>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 《完》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容