c++ primer第五版145页
首先声明了一个
const char *cp;
之后
static_cast<string>(cp)是合法的。
好吧,不太能理解,我明白只要不改变const属性可以用static_cast,问题是把什么转换成了string,书上说的是把字符串字面值转换成了string类型
为什么呢???
在c++中,一个字符串常量表示的是该字符串第一个元素的地址,就跟char*,char数组名表示的是字符串第一个元素的地址一样。
附一篇有用的博文,https://www.cnblogs.com/GuoYuying/p/11391981.html
说明以下两种初始化的差异
char a[20] = "1234";const char * p = "1234";
因此,我的理解是const char *cp就是一个字符串字面值类型,对他使用static_cast<string>(cp)将整个类型转换成string类型。
问题又来了,那么string类型是不是一个常量呢?
一般有这样的初始化语句
string s=“sssss”;这是将“sssss”拷贝给了s
后面的我不知道了,相通再写吧