C++的特點

Ruyi.Luo發表於2018-11-29

C和C++

C主要是應用在在驅動層,是程式導向的程式語言,對型別的定義不是很嚴格。C++主要是應用與應用層,是C語言的一個加強版,可以完全相容C語言,並且還有很多C語言不具備的特性,如,C++是一種物件導向的程式語言,C++的設計目標是:執行效率和開發效率的統一

  • C++更加強調語言的實用性,可以在任意地方宣告變數
  • C++中的register只是起到相容性的作用
  • C++中的編譯器能夠更好的進行優化

struct關鍵字的加強:

C

typedef struct _tag_student Student;

struct _tag_student

{

const char* name;

int age;

}

C++

struct Student

{

const char* name;

int age;

};

int f() 和int f(void)有什麼區別

注意:C++中的所有的表示符都必須顯示的宣告型別,不允許預設型別的出現,但是在C語言中可以

C++中:

  • int f()和int f(void)表示的是相同的意思,指的是定義了一個返回值是int的無引數的函式

C中: (在C中預設的引數型別和函式返回值型別都是int)

  • int f() 指的是定義了一個返回值為int 函式引數個數為任意多個的函式
  • int f(void) 指的是定義了一個返回值為int型別的無引數的函式

C和C++中的const的分析:

C

  • 修飾的變數是隻讀,本質還是變數
  • 修飾的區域性變數在棧上分配空間
  • 修飾的全域性變數在只讀儲存區分配空間
  • 只在編譯期有用,其他時間沒用
  • 注意:const修飾的變數不是真的常量,他只是告訴編譯器該變數不能出現在賦值符號的左邊

C++

  • 當碰到const識別符號時,在符號表中放入常量
  • 編譯過程中若發現使用常量,則直接以符號表中的常量進行替換
  • 編譯過程中若發現下述情況,則給對應常量分配記憶體空間
    • 對const常量使用了extern
    • 對const常量使用了&操作符
  • C++編譯器雖然可能給const常量分配空間但是不會使用其儲存空間中的值

小結:

  • 與C語言不同,C++中的const不是隻讀變數
  • C++中的const是一個真正意義上的常量
  • C++編譯器可能會為const常量分配空間
  • C++完全相容C語言中const常量的語法特性

相關文章