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