第六章 6 6 1節練習 6 7節練習

2021-06-26 10:24:28 字數 1464 閱讀 5268

練習6.52

已知有如下宣告,

void manip(int, int);

double dobj;

請指出下列呼叫中每個型別轉換的等級(參見6.6.1節,第219頁)

(a) manip('a', 'z');

(b) manip(55.4, dobj);

解答:(a) 5(字元字面轉char) ->3(char轉int)

(b) 5(double轉int)

練習6.53

說明下列每組宣告中的第二條語句會產生什麼影響,並指出哪些不合法(如果有的話)

(a)int calc(int&, int&);

int calc(const int&, const int&);

(b)int calc(char*, char*);

int calc(const char*, const char*);

(c)int calc(char*, char*);

int calc(char* const, char* const);

解答:(a)(b)都是合法的。(a)的第二句是作用於常量引用,(b)的第二句是作用於常量的指標

(c)是非法的,這兩句宣告重複宣告了int calc(char*, char*);

(c)在作為宣告時,是合法的。但當兩個宣告都有各自的實現,則會出現重定義的情況。

測試**:

#include int calc(char*, char*)

int calc(char* const, char* const)

int main()

g++(gcc version 5.4.0 20160609 (ubuntu 5.4.0-6ubuntu1~16.04.4) )的編譯結果

~$ g++ test.cc 

test.cc: in function 『int calc(char*, char*)』:

test.cc:6:5: error: redefinition of 『int calc(char*, char*)』

int calc(char* const, char* const);

練習6.56

呼叫上述vector物件中的每個元素並輸出其結果。

解答;

#include #include using namespace std;

int add(int a, int b)

int sub(int a, int b)

int mul(int a, int b)

int div(int a, int b)

int main();

for (vector::size_type i = 0; i != funvec.size(); ++i)

for (auto i : funvec)

}

第六章 6 2 5節練習 6 2 6節練習

練習6.25 編寫乙個main函式,令其接受兩個實參。把實參的內容鏈結成乙個string物件並輸出出來。解答 include include using namespace std int main int argc,char argv cout option endl 練習6.26 編寫乙個程式,...

第六章 6 4節練習 6 5 1節練習

練習6.39 說明在下面的每組宣告中第二條宣告語句是何含義。如果有非法的宣告,請指出來。a int calc int,int int calc const int,const int b int get double get c int reset int double reset double 解...

第六章 6 1 1節練習

練習6.6 說明形參 區域性變數以及區域性靜態變數的區別。編寫乙個函式,同時用到這三種形式。解答 只要定義有引數的函式,就會涉及到形參。區域性變數,就是只能在區域性使用的變數,無法在其他地方進行使用。當然,其還可以對全域性同名變數進行隱藏。區域性靜態變數,也是在區域性使用,但是其銷毀會在程式結束之後...