10分 |
string 的构造函数不支持 void*指针的传入。所有前两句错了。
string str = “\0”; string str = “”; 这个才是字符串空的写法。 |
10分 |
string str = 0;
string str = NULL; string str=0,string没有定义一个整型的构造函数。所以无法完成隐式转换(将int转换成string)。 string str = “0”; string str=”0″先调用string接受(const char*)的构造函数,把”0″隐式转换成string,再调用赋值构造对初始化str。 |
C++中就是这样
string str; 注意, 不要把Java中的思想带过来了. 在C++中, 如果你想定义时,用其它参数初始化这个对象可以这样. |
|
10分 |
string str = 0;
string str = NULL; 在C++中. NULL == 0 并且string没有重载能接收一个整型数据的构造函数. |
10分 |
string str = 0; 这里两种写法其实是一个意思吧,NULL就是0吧,string是不接受NULL值构造的,虽然编译可以通过,但是运行的时候会触发断言 string str = “0”; __CLR_OR_THIS_CALL basic_string(const _Elem *_Ptr) : _Mybase() { // construct from [_Ptr, <null>) _Tidy(); assign(_Ptr); } string str; |
更正错误,由于string有(const char *)类型的构造函数,直接调用该类型的构造函数进行隐式转换成string。 |
|
明白了,声明string类型的变量就是new一个string类的对象,可以这么理解,看看string的构造函数很有必要
|
|
通常只要仔细看看zhao4zhong1的回复就足够了。 |