为什么标准C++中两个直接字符串常量不能相加
生活随笔
收集整理的這篇文章主要介紹了
为什么标准C++中两个直接字符串常量不能相加
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
《Accelerated C++》一書的第一章的課后題
- 下面的編譯是否有問題?
1:
2:
const std::string exclam = “!”; const std::string message = “Hello” + “, world” + exclam;第一段代碼是可以編譯成功的,但是第二段代碼不行。
因為在第二段代碼的第二句,賦值號的右邊先做”Hello” + “,world” 操作,而對于”Hello”和”,world”都是const char[]類型的,在標(biāo)準(zhǔn)C++中這個類型是不能做 “+”操作的。
而對于第一段代碼,hello + “,world”可以進(jìn)行成功操作,因為hello為std::string類型,對于這種類型,標(biāo)準(zhǔn)庫中重載了其與char[]類型之間的”+”操作符,所以是可以的,并且返回值是std::string類型,當(dāng)然再與右面的exclam操作也沒問題了。
對于string類型的“+”操作符,在標(biāo)準(zhǔn)庫中重載了string與string的+操作,string與char[]的+操作,以及string與char的+操作,也就是說’x’+hello也是可以的。
所以,為什么兩個直接字符串不能相加?
很簡單一句話,因為C++標(biāo)準(zhǔn)庫中沒有實現(xiàn)“+”號對于char[]類型的重載以支持char[] + char[]操作。
總結(jié)
以上是生活随笔為你收集整理的为什么标准C++中两个直接字符串常量不能相加的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 判断链表是否为回文结构
- 下一篇: 人工智能实践之旅 —— 简单说说主要内容