C Primer 第五版 13 1 3節練習

2021-09-08 06:45:09 字數 868 閱讀 7239

13.9    析構函式:執行和建構函式相反的操作,釋放物件所使用的資源,並銷毀物件的非static成員。析構函式名字為~接類名,無返回值和引數;

合成析構函式先執行函式體(空函式體),後銷毀成員。

當乙個類沒有定義析構函式時,編譯器會合成析構函式。

13.10    銷毀strblob物件:執行合成的析構函式,先執行空函式體,再銷毀成員data,銷毀data時呼叫shared_ptr的析構函式,將引用計數減1,引用計數為0則銷毀共享的vector物件;

銷毀strblobptr物件:執行合成的析構函式,先執行空函式體,再銷毀wptr和curr成員,銷毀wptr時呼叫weak_ptr的析構函式,引用計數不變,curr為內建型別,直接銷毀。

13.11    hasptr的析構函式:

hasptr::~hasptr()

13.12    函式結束時,區域性變數item1,item2,引數accum的生命期結束,會發生三次析構函式的呼叫。引數trans是指標,它指向的sales_data物件生命期未結束,不會呼叫析構函式。

13.13    測試**如下:

#include #include using namespace::std;

struct x

//拷貝建構函式

x(const x&)

//拷貝賦值運算子

x& operator=(const x &)

//析構函式

~x()

};void fun1(x p)

void fun2(x &p)

int main(int argc, char *ar**)

C Primer第五版 2 4 3節練習

練習2.30 對於下面的這些語句,請說明物件被宣告成了頂層const還是底層const?const int v2 0 v2的值不能被改變,所以這是乙個頂層const int v1 v2 int p1 v1,r1 v1 const int p2 v2 p2存放的是v2的位址,不能間接改變v2的值,但p...

C Primer第五版 2 5 3節練習

練習 2.36 關於下面的 請指出乙個變數的型別以及程式結束時它們各自的值。include int main 練習 2.37 賦值是會產生引用的一類典型表示式,引用的型別就是左值的型別。也就是說,如果i是int,則表示式 i x的型別是int 根據這一特點,請指出下面的 中每乙個變數的型別和值。in...

C Primer第五版 3 2 2節練習

練習3.2 編寫一段程式從標準輸入中一次讀入一整行,然後修改該程式使其一次讀入乙個詞。練習3.3 請說明string類的輸入運算子和getline函式分別是如何處理空白字元的。練習 3.4 編寫一段程式讀入兩個字串,比較其是否相等並輸出結果。如果不相等,輸出較大的那個字串。改寫上述程式,比較輸入的兩...