文章目錄
- 標頭檔中的 static inline 函數。 如果在標頭檔中定義一個函數,那麼如果有兩個以上的檔案include
extern:
聲明一個變數。 陷阱: 如果一個聲明一個變數時有初始化式,那麼extern將被忽略。(即他就是一個定義)
extern int var = 30 ; // defintion varextern nt s ; // declares s
const:
const variable 具有地址。 不想有些語言那樣是符號常量。
const variable的預設範圍是本編譯單元(檔案), 其他檔案無法訪問,要變成全域的用extern指定。註:非const變數預設為全域的
const int ci = 32 ; //access scope is fileextern const int eci = 12; // globle scope
Reference:
定義:在變數名的前面添加&來定義。
int i = 3 ;int &ri = i ;
預設實參:
如果一個形參具有預設實參,那他後面的形參都要定義預設實參。
定義約束:即可才原型中指定,也可在函數定義時指定。一個檔案中只能指定一次預設實參,一般是不能同時指定。(一般在函式宣告是指定放在標頭檔中)
ptrdiff_t:
是一種機器無關的有符號整數類型。用作指標的算術傳回型別
inline function:
定義函數時在傳回型別前添加inline keyword,(聲明函數時並不需要,加上也可以)
inline 函數與const變數有相同的性質就是範圍為本編譯模組, 要想讓其他編譯模組可以使用要在函數定義時添加 extern (也const 變數相同)
extern inline aad() {...}
inline 函數應放在標頭檔中。
- 顯式指定inline成員函數:與inline一樣,即可在聲明是指定,又可在定義式指定,同時指定也行。inline 成員函數一般放在該類定義的標頭檔中。
Overload:
- Function: 只有const和非const引用或指標作為參數時才可重載(即不同),其他類型的const 和非const參數相同。
- Element function: 還可以根據是否是const *this來重載。 即 Myclass& ele_func(...) ; const Myclass& ele_func(...) const ;
I/O:
cin >> std::ws ; 忽略接下來的空白字元知道下一個有效字元,僅對下一個輸入有效。
int x, y ;string str ;cin >> x >> y ;cin.ws ; cin >> str ; 比如我輸入 3 24 hello(按斷行符號)若無cin.ws 則str的值為“空格hello”若有則為“hello”若我輸入 23 12(斷行符號)hello若無cin.ws 則str的值為空白。若有str為hello
CLASS:
成員函數指標,虛成員函數的指標#include <iostream>
struct A {
virtual void ok(int i) { std::cout <<"A" << i << std::endl ; }
};
struct B : public A {
B(){ok(0);}
virtual void ok(int i) { std::cout <<"B" << i << std::endl ; }
};
int main() {
void (A::*pa)(int i) = &A::ok ;
void (B::*pb)(int i) = &B::ok ;
B b ;
(b.*pa)(0x33); //B0X33
(b.*pb)(0x44); //B0x44
return 0 ;
}
1.定義成員函數指標時 變數和成員函數都要使用類名。
2 對成員函數指標的調用必須使用類對象來調用
2.虛成員函數指標和虛函數一樣會找到匹配的調用函數
firnd 聲明
聲明Class A 是 Class B的 友員時,必須使用 class 關鍵字
e.g
class A{};
class B { frind class A;}
STL
<T>::size_type : 是一個機器無關的不帶正負號的整數。 是T.size() ; 的放回類型, string的下標類型。
<T>::difference_type:是一個機器無關的有符號整數類型,主要用於迭代器的算術操作傳回型別。
static
主要用於控制聲明對象的範圍。
一般用static聲明的變數和函數只用本編譯模組可見(檔案)
如果在標頭檔中使用static定義一個變數或者函數那麼,所以include此檔案的其他檔案都有一個自己的本地變數。
標頭檔中的 static inline 函數。 如果在標頭檔中定義一個函數,那麼如果有兩個以上的檔案include
此定義檔案在連結時就會發生多次定義的錯誤。這時可使用 static聲明該函數,使函數只在本檔案中可見。就不會報錯了。
一般會把小的常用的函式宣告為static inline。