回覆列表
  • 1 # 使用者4532147702961

    當進行string物件和字串字面值進行連線時,+運算子的左右至少出現一個是string型別的。

    string s1 = "hello";

    string s2 = "world";

    string s3 = s1 + ",";//ok

    string s4 = "hello" + ",";//error

    string s5 = s1 + "," + "world";ok

    string s6 = "hello" + "," + s2;error

    s4錯誤的原因是試圖直接將兩個字串的字面值進行相加;

    s5沒錯因為前面一個+相當於把前面兩個先做temp = s1+",";的操作,temp是字串型,然後將temp與後面的進行相加;

    s6錯誤的原因參照s4、s5就知道了。

    補充:過載就是對已有的運算子進行重新定義,以適應不同的資料型別,比如string s1 = string s2;int i1 = int i2;如果要用自定義的型別type_self,使得type_self tp1 = type_self tp2;一般的C++標準庫裡應該都有集成了,只有用到自己定義的資料型別就得重新寫函式定義了。

    string中的字串複製:

    String::String(const String &s):

    _cstr(s._cstr),

    _used(s._used),

    _length(s._length),

    _capacity(s._capacity)

    {

    ++*_used;

    }

  • 中秋節和大豐收的關聯?
  • 流標和廢標有什麼區別?