赋值运算符之所以可用是因为String类在实现时有这样的一个重载:
string& operator = ( const char* );
至于楼上所说的,
char* ch1 = "hello";这是一个常量。
char ch1[] = .. 这是一个变量。
字符串字面值其实就是指字符串吧。
string是C++标准库的类,重载了=操作符,
string &operator = (char * ch)
另外,char *ch1="hello";最好写成char ch1[] ="hello";
否则ch1只是个指针。