string 类型有一个接受c风格字符串的的构造函数,如 string str("string"),首先,在这个初始化式中,"string"是一个c风格字符串,它出现在程序中的类型是什么?其实是一个const char * 类型的数据,"string "被存储在一个静态存储区,存储时自动附加\0作为结尾,所以当你看到这个"string"时,他就是一个c风格字符串。但在此处,被作为一个指向 const char 的指针。
那么,string的这个构造函数能否被隐式加载?也即是说能不能用作隐身类型转换?答案是肯定的,也就是说,string的这个构造函数非explicit。可用代码测试: