預備小知識:
1、在C++中const char* 與char*的區別
由於const char*與char*相比有更高的等級限制(const),因此char*的數據可以賦給const char*,但是反過來,const char*不能賦值給 char*
總結來說就是,const char*可以由char*賦值和替代,換言之當一個函數的參數為const char*時,該位置也可以傳入char*,反之不成立
2、在C++中”hello world”是一個const char*或者說是一個char [ ]的類型
3、字符數組可以通過C++的字符串賦值,字符指針不行(除非是const的字符指針)
正式開始:
C++中的string類是由STL標准模板庫提供,在string類中提供了string對象的構造器、string對象的方法等等。
(1)string類的類對象賦初始值的方式
String類中的對象構造器的實質是傳進了一個const char*的指針
默認構造,表示空字符串
直接賦值(” ”本質就是const char*)
字符指針賦值(char*當然可以傳給const char*)
字符數組賦值(數組名的本質也是const char*)
因此我們以函數的形參類型與傳入的參數來得出string類對象、char*、char [ ]的關系如下
2021.12.5補充更新
補充一:今天發現當時的總結有誤,無論是什么類型都不能被string的對象賦值,因為基礎數據類型和string的類類型不能划等號,因此這也就是為什么無論以何種基礎數據類型作為
形參,string對象無法傳入的原因(本質原因)
補充二:const的問題只限於基礎數據類型使用C++的字符串進行初始化的時候,因為C++的字符串是const char*類型的(“aasasas”),這里C++字符串而不是指字符串類型的對象