string s = “aa”+‘a’; 这个定义的s的值是空的(“”);
"aa" 是元素为 char 类型的数组,在表达式中隐式转换为指针, 'a' 的类型是 char,这是个整数类型——以上是C++的规定
指向数组首元素(或者说第0个元素)的指针加上整数N,结果就是指向数组第N个元素的指针。——如果数组没有N个元素,结果是未定义的,然而编译器不一定能检查出这种情况
对于 const char* 和 char 间的加法运算,结果是一个 const char* 类型的值。
string 类有一个构造函数接受 const char* 类型的值(因此可以用字符串字面量初始化 string 对象),但它无法判断传入的值是不是合法的。所以虽然产生了未定义的结果,但刚好能被这个构造函数接受,从而构造出 string 对象——然而归根结底,这是不合法的,只是编译器没能检查出来而已
string s1 = s2 + "aa"; //ok
string s1 = s2 + s3; //OK