C++ 備忘

來源:互聯網
上載者:User
文章目錄
  • 標頭檔中的 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:

  • 建構函式初始化列表,在函數定義式指定
    Myclass() : ele1(val1),  ele2(val2) {..}
  • 禁止其他函數調用類的copy建構函式,private一個建構函式,要想使友元也不能訪問,只聲明,不定義。(連結時將報錯) 

成員函數指標,虛成員函數的指標#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。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.