C++筆記

來源:互聯網
上載者:User

標籤:純虛函數   space   別名   tab   reg   lin   const關鍵字   efi   pac   

資料類型

  bool 布爾型

  char 字元型 8位

  wchar_t 寬字元型 16位

  short 短整型 16位

  int 整形 16位

  long 長整形 32位

  float 單精確度浮點型 6為有效數字

  double 雙精確度浮點型 10位有效數字

  long double 擴充精度浮點型 10位有效數字

修飾符:資料類型前面可以加上一個和多個修飾符 ,例如long long ,前一個是修飾符,後一個是類型

 

  • signed
  • unsigned
  • short
  • long

typedef 用來為已有資料類型起別名

sizeof()函數可以擷取類型的大小

struct

enum

C++數組定義與賦值:int ar[]       char ch[]

C++字串:C++可以使用char數組代替字串,也可以引入 <string>標頭檔,使用String建構函式;

      {‘abc‘,‘def‘,‘jnm‘}可以看成字串數組,數組元素為char數組   

常量:使用const關鍵字,或#define 定義

------------------------------------------------------------------------

儲存類:修飾符

  • auto
  • register
  • static
  • extern
  • mutable
  • thread_local (C++11)

-------------------------------------------------------------------------

指標和引用的區別

int i=1;  int& r=i;      r是i的引用

int *p=&i;

指標定義時*不必與int 或 p 相鄰,int* p      int *p       int * p都能正常編譯

根據不同情況選擇不同格式可以使代碼方便閱讀

----------------------------------------------------------------------------

物件導向

類

c++中類可以看成一種資料機構,可以與函數、結構體處於同一層級,與Java中一個類就是一個java檔案不同

C++中類的結構:

  class Demo

  {

    public:

      int a;

      int func()

      {

        return 0; 

      }

    private:

      int b;

  }

類成員修飾符:public protect private(預設)

類成員函數:可以在類中聲明並定義(函數體),或者只在類中聲明,使用 :: 運算子在類外面定義;

建構函式和解構函式:解構函式用來刪除對象

拷貝建構函式、內嵌函式、友元函數

---------------------------------------------------------------------------------------

C++中類的繼承,一個類可以有多個直接父類,多繼承(如果多個直接父類中有同名變數或函數,怎麼處理)

繼承的寫法:class 衍生類別 : 存取修飾詞  基類{}

思考:同一個類、衍生類別、外部類分別有3、2、1個存取權限,public protect private(預設);

   衍生類別繼承哪些函數、哪些不繼承(基類的建構函式、解構函式和拷貝建構函式、基類的重載運算子、基類的友元函數)

---------------------------------------------------------------------------------------------

C++多態與Java多態

虛函數,使用virtual關鍵字定義,告訴編譯器不要靜態連結,在衍生類別中重新定義虛函數(相當於Java方法重寫),根據衍生類別的類型調用不用的重寫方法

純虛函數,沒有方法體,方法體用 =0;代替,表示這是一個純虛函數,相當於Java中的抽象方法

介面(抽象類別):至少有一個純虛函數,這點與Java中的介面和抽象類別不同。

---------------------------------------------------------------------------------------------------

Java泛型和C++模板的區別,Java的泛型是文法糖,與模板有很多區別

-----------------------------------------------------------------------------------------

命名空間:在同一個命名空間下不能有同名的變數和函數,命名空間表示一個範圍

命名空間的定義和使用

使用namespace關鍵字定義

   namespace  空間名 {  代碼。。。。 }

using namespace ...

使用範圍運算子 :: 調用特定命名空間中的函數

------------------------------------------------------------------------------------------

C++ STL:類似於Java的集合架構,封裝了一些資料結構的操作

--------------------------------------------------------------------------------------

動態記憶體分配

C語言中使用malloc()和free()函數族

C++中使用new和delete運算子

malloc()函數原型及使用

(void *)malloc(int size)

malloc函數傳回值是void類型的指標,接收的參數是int類型

調用malloc函數需要將void類型指標強制轉換成具體的資料類型指標,然後賦值給指標變數

char *p = (char *)malloc(100);

free()函數釋放記憶體,參數是記憶體首地址

free(p);

使用free()函數釋放記憶體後,p指標的值並沒有變,為了防止再次使用p指標造成錯誤,應該p=NULL;

----------------------------------------------------------------------

new 運算子的使用,new可以用來申請記憶體配置,也可以來建立類對象

使用new建立的對象需要用指標變數接收,此對象在堆記憶體中,使用delete 對象名刪除對象

不使用new建立的對象存放在棧記憶體中

malloc和new的區別:因為malloc是函數,編譯器無法控制,但是建立對象又需要自動執行建構函式,刪除時要執行解構函式,所以C++使用new運算子分配記憶體

------------------------------------------------------------------------------

函數執行時棧與寄存器的變化

ebp寄存器儲存棧底地址

esp寄存器儲存棧頂地址

當一個函數中調用另一個函數時

首先將當前函數的棧底地址,也就是ebp寄存器中的值壓棧,esp地址增加1,

將esp中的值存放到ebp中

esp增加1

這樣ebp寄存器中的地址值指向的記憶體中存放的值是當前函數的調用函數的棧底

http://www.cnblogs.com/syw-casualet/p/5223595.html

 

C++筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.