case true:
string file_name = getname();
break;
case false:
//….
這個**不行,想想
,如果先執行了
false,
然後false
裡面用到了
file_name
怎麼辦???
會提示沒有定義
!!!(
並且編譯器會報錯
,dev c++
嘗試了)
因此要在
true
後新增大括號
,表明區域性作用域
, 或者在
switch
外面定義變數
.#include
using namespace std;
int main()
0x22ff70
0x22ff74
434如:string::size_type find_char(string& s, char c)
則find_char(「hello world」, 『h』)
用不了,因為
hello..
是字串常量
是const
物件宣告乙個引用,不是新定義了乙個變數,它只表示該引用名是目標變數名的乙個別名,它本身不是一種資料型別,因此引用本身不佔儲存單元,系統也不給引用分配儲存單元。故:對引用求位址,就是對目標變數求位址。
&ra與
&a相等。
另外取sizeof(rn)
與其原來的值一樣
,sizeof(rd)==8,rd
是乙個double
的引用!!!
不能建立陣列的引用。因為陣列是乙個由若干個元素所組成的集合,所以無法建立乙個陣列的別名。
不能建立引用的引用,不能建立指向引用的指標。因為引用不是一種資料型別,所以沒有引用的引用,沒有引用的指標。
例如:int n
;int &&r=n;//
錯誤,編譯系統把
"int &"
看成一體,把
"&r"
看成一體,即建立了引用的引用,引用的物件應當是某種資料型別的變數
int &*p=n;//
錯誤,編譯系統把
"int &"
看成一體,把
"&p"
看成一體,即建立了指向引用的指標,指標只能指向某種資料型別的變數
值得一提的是,可以建立指標的引用
例如:int*p;
int *&q=p;//
正確,編譯系統把
"int *"
看成一體,把
"&q"
看成一體,即建立指標
p的引用,亦即給指標
p起別名q。
注意:學會這種分析方法,把什麼看成一體,又把什麼看成一體
怎麼做?會嗎?
// 最大公約數的遞迴函式
#include
using namespace std;
int maxfactor(int n, int m);
int main()
int maxfactor(int n, int m)
後面兩種參考
c++ primer
的演算法,前面是自己的
cout<
cout<
null
cout<
#include
using namespace std;
int main()
flushends endl
上面空格處有乙個
null
,在執行結果視窗賦值進來時後面的
endl
複製不了了,因為字串已經結束,
自己新增的,
顯示執行結果!!!
1)必須支援賦值運算子
2)必須可以複製
3)引用型別不可以
4)輸入輸出
io標準庫型別不可以
while(first != end)
dovector vec;
vector::size_type ix;
cout<
<
//for(int i=0; i<10; i++)
這個也行,當然可以使用整型啊
for( ix=0; ix<10; ix++)
vec.push_back(ix);
// for(int i =0; i!=10; i++)
cout<
<
while(vec.size()!=vec.capacity())
vec.push_back(10);
cout<
<
vec.push_back(100);
cout<
<
結果:vec size: 0 capacity: 0
vec size: 10 capacity: 16
vec size: 16 capacity: 16
vec size: 17 capacity: 32
請按任意鍵繼續
. . .
在普通的非
const
成員函式中,
this
指標型別是乙個指向類型別的
const
指標,在
const
成員函式中,
this
指標是乙個指向
cosnt
類型別的
cosnt
指標。
1)引用型別
2)cosnt
成員3)
缺少預設建構函式的類型別成員(如果沒有建構函式,系統預設提供乙個,就算有預設建構函式;
只在定義了非預設建構函式,但是又沒有過載預設建構函式的情形)
解釋原因:可以初始化
const
物件或引用型別的物件,但是不能對它們賦值!!!!
1)
呼叫方式:
pair.operator++(0);//
字尾形式,加了一
0
pair.operator++();//
字首形式
2)
原型:
class check
3)
實現:
// 字首的實現
check check::operator++()
//字尾的實現:
check check::operator++(int)
已經定義的類才可以做基類。如果宣告了
item_base
類,但是沒有定義它,不能用它作為基類:
class item_base;
class bulk_item: public item_base
這就是錯誤的!!!
全域性命名空間(預設,沒有名字,呼叫方法
:: )
在main
之外!未命名空間,用來取代檔案中的靜態宣告
C Primer學習筆記(二)
繼續。1.size t和string size type,vector size type.bitset的size函式返回值型別是size t。string和vector的size函式返回值型別是對應的size type size t 是乙個於機器無關的unsigned型別,其大小足以儲存記憶體物件...
c primer學習筆記(二)
1.從const 成員函式返回 this 在普通的非 const 成員函式中,this 的型別是乙個指向類型別的 const 指標,可以改變 this 所指向的值,但不能改變 this 所儲存的位址。在 const 成員函式中,this 的型別是乙個指向 const 類型別的 const 指標,既不...
C Primer 學習筆記(二)
第二章 2.1乙個char的空間應確保可以存放機器基本字符集中任意字元對應的數字值,也就是說乙個char的大小和乙個機器位元組一樣 2.2可定址的最小記憶體塊稱為位元組,儲存的基本單元稱為字 2.3一般來說,float和double分別有7和16個有效位 2.4在算術表示式中不要使用char或boo...