C++の表達式與語句

  • 2019 年 12 月 27 日
  • 筆記

題圖:NoCopy

字數:952 | 半分鐘讀完我1.5小時的思考

C++表達式

天我們簡單介紹一下C++中的表達式,那麼什麼是表達式呢?我所理解的就是能表示操作數之間運算關係的表達式,那麼表示操作數之間運算關係的是怎麼實現的呢?是由運算符實現的,其實運算符才是表達式中的關鍵所在。下面我們重點說說運算符。

單目運算符與雙目運算符

運算符有單目運算法與雙目運算符之分。所謂單目運算符就是使用時只需要一個操作數,比如我們常見的取地址符(&),還有之前說到vector與array中的解引用運算符(*), 這個在C語言中,經常被用來取某個地址所存內容的值,因此又叫取值運算符。

#include <vector>    int main(){        int num = 10;      std::vector<int> vec1={1, 2, 3, 4};      for(auto 1 = vec1.begin(); 1 != vec1.end(); ++i)          std::cout << *i << std::endl;  }  

重載運算符

C++中有一種比較特殊的運算符,重載運算符。我們知道C++的運算符可以用在基本內置類型,也可以用在類類型。那麼這兩者有什麼不同呢?當用於類類型時,這些運算符可以被用戶自定義,也就是說它可以有新的含義。因為形同義不同所以被稱作重載運算符。

那麼,我們在這之前有沒有見過呢?當然!其實我們常見的IO庫中 << 和 >>就是重載運算符,除此之外,我們之前介紹的string, vector, array, 迭代器等,它們使用的運算符都是重載運算符。這樣初步看,重載運算符相對於普通的運算符更加靈活。實際上,重載運算符就像是我們自己創造的一樣,我們可以定製化我們自己的運算符。

左值和右值

下面簡單說一下左值與右值,我剛學習C++的時候,有一個感覺就是,左值?右值?傻傻分不清楚!所以下面我一定要把這兩個概念講清楚,因為後面我們學到C++中的高階用法時,這兩個概念會時不時蹦出來, 其實一查,也沒那麼難。

C++表達式只可能是左值和右值其中的一種。左值與右值是由一定的歷史淵源的,它們繼承自祖輩C語言,只不過C語言中的概念很簡單:就是左值能放在賦值符號的左邊,右值只能放在賦值符號的右邊。

然鵝,C++中的就要複雜得多,在不同的符號前,它們的用法不用,比如:

賦值運算符、取地址符、內置解引用運算符、下標運算符等等,它們的用法都是不同的。

為了趕在12點前發出去看來今天的文章是寫不完了,沒事兒,明天繼續接著說。先發出去吧,我開始寫明天的文章了,畢竟咱說好的日更,不能停,天塌了,也必須日更!