c primer plus閱讀筆記 八

2021-08-08 06:46:42 字數 2011 閱讀 6222

1.友元類的宣告

class tv;

class remote;

2.友元成員函式

不想使用友類所有函式都變成友元,可以使用友元成員函式。

!!編譯器本身的符號解析和編譯時按順序來的,導致友元成員寫起來要注意順序。

class a ; //a要前向宣告,否則b中不知道是什麼

class b ;

class a ;

inline

void b::fn(a& temp)

如果巢狀類是在另乙個類的私有部分宣告的,則只有後者能夠使用它,如下。

class a;

public:

b temp;

};其餘的保護還有公共屬性方面,和基本的資料成員的訪問許可權是一樣的。

#include

#include//異常的標頭檔案

using

namespace

std;

int main()

cout

<<1.0/(a+b);

return

0;}

try

catch(const

char *s)

void fn()

如果引發了一場卻沒有try塊匹配或沒有匹配的處理程式的時候,預設情況下,程式最終將呼叫abort()函式。
除了字串之外,throw可以返回一切型別,同時使用多個catch進行捕獲進行對應的處理,沒有匹配型別不會進行轉換,會呼叫 abort()函式

class temp;

trycatch(const

char *s)

catch(const temp& s)

cathc(...)

void fn()

try {}捕獲的異常不一定是在下一層函式,反是在這個過程中throw的異常都會**獲到。 從引發異常的函式條到包含try塊和處理程式的函式,涉及到棧解退。

棧解退:函式由於出現異常而終止。陳旭將釋放棧中的記憶體,但不會在釋放棧的第乙個返回位址後就停止,而是繼續釋放棧,直到找到乙個位於try塊中過得返回位址。

!!棧解退會導致記憶體洩漏,如下程式

void fn()

!!避免方式,使用try..catch處理,

void fn()

catch(exception& ex)

...delete ar; //棧解退導致此句來不及執行。

}

rtti(runtime type identification)執行時確定型別

rtti函式值適用於包含虛函式的類

dynamic_cast轉化

轉化的型別如果是繼承中的高層類(派生)轉給底層類,是安全的,否則不安全,dynamic_cast在不安全轉化的時候將會返回空指標。

class a

...};

class b:public a;

class c:public c;

a* ao=dynamic_cast(new b); //ok

b* bo=dynamic_cast(new a); //null

//dynamic_cast對於引用,不安全的時候會出現異常

trycatch (const exception& e)

typeid

返回的是乙個type_info的物件的引用,type_info是乙個記錄了物件型別的結構,其中含有成員函式name()可以指出當前類的名字,並過載了 == 和 !=運算子

運算子返回乙個指出物件的型別的值

a ao;

b bo;

type_id(ao) == type_id(bo); //0

cout<

C Primer Plus閱讀筆記

成員函式的讀取方式解決了空格字元本身的讀取問題,彌補了第一種普通讀取方式的不足。書中第153頁的例子對此進行了很好的說明。此外,值得注意的是,cin.get 成員函式支援過載,例如cin.get 返回乙個字元,而cin.get ch 返回乙個cin物件。1 可以修改指標的值,而陣列名是常量 2 對陣...

《C Primer Plus》開頭閱讀筆記

已經入了門,因此只看個開頭,後面對於c的具體介紹主要在 the c programming language 中閱讀。1.編寫 前的定義程式目標和設計程式步驟很重要,每次程式設計工作做完後需要進行總結,對過程中進行了什麼改變進行記錄。2.window ide中,可能遇到顯示程式執行的視窗在程式終止時...

c primer plus閱讀筆記(一)

int a 1 undigned int b 0 cout 4294967295 typename value c typename value c static cast value 更加嚴格的強轉auto a 100 int auto b 10.0 double auto iter vector...