C++語言的基本語法規則

才智咖 人氣:1.64W

C++是由AT&T Bell(貝爾)實驗室的Bjarne Stroustrup博士及其同事於20世紀80年代初在C語言的基礎上開發成功的。下面是小編收集的C++語言的基本語法規則,希望大家認真閱讀!

C++語言的基本語法規則

C++語法表示式規則的建立基礎

C++ 中的布林型別:布林型別只佔用一個bit ,但是如果連續定義多個布林型別時,編譯器可能會多個布林型別定義在一起。true 編譯器用1來表示。false 編譯器用0來表示。

將一個其他型別的資料賦給布林型別變數:C++編譯器會將所有的非0的值轉換為true(1),將0 轉化為false(0)。

三木運算子 ? : :將一個三目運算子作為左值: (a>b?a:b) = 3 C語言不支援(三目運算子返回一個值),但在C++中支援(三目元算符返回變數)。 但是如果可能的返回值有一個是常量值,那麼它就不能作為左值使用,如(a>b?1:b) = 3 非法。

引用:

C++中的引用:一個已經定義的變數的別名。 Type var , Type & name = var; 普通引用在宣告時必須用其他的變數進行初始化。引用作為函式引數宣告時不進行初始化。

const 修飾引用:const 使引用擁有隻讀屬性,但是變數本身還是原來的屬性。

當使用常量對const 引用進行初始化時,編譯器會給常量分配空間,並將引用名命名為這段空間的別名。不能給普通引用賦值為常量,但是可以給常引用賦值為常量。此時常引用是隻讀的,除了在定義時,不能給它賦值。因此用一個常引用可以構成一個只讀的變數,如 const int & a = 10 a是一個只讀變數。

引用在C++ 的內部實現是一個常指標:type & name ßàtype* const name。因此引用擁有一個4位元組的空間。

引用作為函式返回值:返回區域性變數的引用時,引用不能作為左值,也不能用它初始化其他引用,但是如果引用時靜態的或者全域性變數的引用時就可以。

C++ 函式探幽:

行內函數:inline int function(…), 行內函數可以替代巨集程式碼片段,在編譯時將函式體直接替代函式被呼叫的'地方,這樣就減少了普通函式被呼叫時 的開銷(壓棧,跳轉等),但是行內函數本質上還是一個函式,不同於巨集程式碼片段。行內函數宣告符inline 必須要和函式定義結合在一起,不能放在宣告處,否則編譯器忽略內聯請求。 雖然行內函數省時省空間,但是編譯器不一定準許函式的內聯請求,當C++編譯器不允許內聯請求時會將行內函數當做普通函式處理。

預設引數: C++中可以在函式宣告時為引數提供一個預設值,當函式呼叫時沒有提供這個引數的值,編譯器會自動用預設值代替。但是在函式定義時就不在指定預設引數值。預設引數有如下規則:

只有引數列表後面的部分引數才可以提供預設引數值,一但在一個函式呼叫中開始使用預設引數,那麼這個引數後的所有引數都必須使用預設引數,因此從開始使用預設引數的使用開始都後面的引數都要提供預設引數,否則編譯器將報錯。總之,在函式宣告時,如果一個引數開始提供預設引數,那麼後面的所有引數都要提供預設引數;在呼叫函式時,如果開始省略引數,那麼後面所有引數都使用預設引數。

函式佔位引數:佔位引數是在函式定義時只有型別宣告,沒有引數名宣告的引數。一般情況下函式體內部無法使用佔位引數。但是在呼叫時必須提供完整的引數個數。可以給佔位引數提供預設引數。意義:為函式的後續版本的擴充套件埋下伏筆;相容C語言中的不規範寫法。

函式過載:簡單來說函式過載就是用同一個函式名來定義不同的函式。那編譯器是如何區分這些函式的呢?事實上,編譯器是通過引數列表來區分過載了的函式。即過載函式擁有不同的引數列表。不同的引數列表包括引數個數不同、引數型別不同、引數順序不同,即滿足上述三個條件之一就能構成過載函式。函式過載在建構函式中是非常有用的。