c++關鍵字(c++98) 有63個
命名空間解決了:名字衝突,有作用域的作用
命名空間的使用格式:
namespace
n1
使用方法:
1. n1::變數
2. using n1::變數;
3. using namespace n1;
c++的輸入輸出
標頭檔案:iostream
命名空間:using namespace std;
使用:
int a;
cin>>a;
cout
<<"hello"
cout
《預設引數void test(int a = 0)
全預設引數
如果沒有傳遞對應引數,則用預設預設值
傳參的時候從右往左傳遞(約定的)
半預設引數
部分引數帶有預設值
++注意++:
半預設引數應該要從右邊開始給,不能有空乙個引數,即從右往左引數要連續賦值
不能這樣寫:
void test(int a = 1, int b , int c = 3)
這樣是對的:
void test(int a, int b = 2, int c = 3)
注意:
預設引數不能再函式宣告和定義中同時出現,寫在函式宣告中即可
預設值必須是常量或者全域性變數
++在同一作用域++宣告幾個功能類似的同名函式
**這些同名函式的形參列表(引數個數、型別、順序)必須
不同,常用來處理實現功能類似資料型別不同的問題**
簡記:作用域相同,函式名相同,引數不同,僅僅是函式的返回值型別不同是無法構成過載的
int add(int a, int b)
double add(double a, double b)
編譯器會識別引數型別,來呼叫匹配的函式
c和c++對同名函式處理:
注:c不支援函式過載
c:在函式名前加了乙個下劃線
c++:(?add@@ya hhd @z)
hhd 代表返回值,引數一的型別,引數二的型別
c++還考慮了引數的型別,所以c++支援函式過載,而c語言不支援。
在c++工程中按照c的風格來編譯:
extern
"c"int add(int a,int b);
引用不是新定義乙個變數,而是給已存在變數取了乙個別名,編譯器不會為引用變數開闢記憶體空間,它和它引用的變數共用同一塊記憶體空間。
注意:引用型別必須和源資料型別相同
引用在定義時必須初始化
乙個變數可以有多個引用
引用一旦引用乙個實體,再不能引用其他實體
常引用
const
int a = 10;
const
int& ra = a;
const
int& r = 10;
double d = 12.34;
const
int& rd = d;//這時 d 和 rd 的位址不一樣了
//陣列的引用
int arr1[10];
int (&rarr1)[10] = arr1;
rarr1[0] = 10;
double d = 12.34;
const int& rd = d;//這時 d 和 rd 的位址不一樣了
解答:資料會被截斷,放到另乙個臨時空間,rd已經是臨時空間的別名了
傳引用交換兩數
void swap(int& left, int& right)
如果不想改變外部實參
可以加入const
void fun(const
int& a);
注意int& test()
int main()
解決方法:將int a=0;做成全域性變數,即移到函式外或者
int& test(int& a)
int main()
引用和指標在底層的處理方式都是一樣的。
引用形式
指標形式
t&t* const
const t&
const t* const
引用在定義時必須初始化,指標沒有要求
一旦乙個引用被初始化為指向乙個物件,就不能再指向其他物件,而 指標可以在任何時候指向任何乙個同型別物件
沒有null引用,但有null指標
在sizeof中含義不同:引用結果為引用型別的大小,但指標始終是地 址空間所佔位元組個數
引用自加改變變數的內容,指標自加改變了指標指向
有多級指標,但是沒有多級引用
指標需要手動定址,引用通過編譯器實現定址
引用比指標使用起來相對更安全
用inline修飾,在程式編譯時,使用內聯函式的會自動展開
inline
int add(int a, int b)
int main()
在debug模式下,實際發現並沒有展開,還是呼叫函式(call)
在release模式下,檢視彙編**,有push 3;說明直接計算出了結果。將結果替換了
在release模式下,編譯器會大量優化。
一般在debug模式下,不會進行優化
inline 以空間換時間
當出現遞迴或者很長的迴圈時,或者**太長,則會忽略inline,inline對編譯器只是乙個建議
常量定義 換用 const
函式定義 換用 內聯函式
型別重定義 換用 typedef
C 命名空間 引用 內聯函式
命名空間 定義命名空間 namespace namespacea namespace namespacebnode 使用方法1 using namespace namespaceb namespacec node t 使用方法2 using namespaceb namespacec node no...
C 函式過載 引用 內聯函式
2 函式過載 3 引用 4 內聯函式 在宣告或定義函式時,給函式的引數設定乙個預設值,當使用者對函式進行呼叫時,如果傳遞了實參,則使用使用者傳遞的實參 如果沒有傳遞則使用預設值。預設引數必須從右往左給出 不能在函式宣告和定義的位置同時給出 預設引數在提供時 常量 全域性變數 c語言不支援。相同作用域...
函式過載 引用 內聯函式
預設引數 在定義或者宣告乙個函式的時候,給它的形參賦上乙個預設值,呼叫這個函式的時候,如果沒有把實參傳入,函式就會使用我們指定的預設引數,如果傳入實參,就會使用傳入的引數。預設引數可分為 全預設引數 在這個函式中,給所有的形參都指定了預設值。半預設引數 在這個函式中,只給一部分的形參指定了預設值。注...