stl并不是C++标准的一部分,如果overload operator+,一定会涉及内存分配的问题。
string在java或则.net当中是内置类型,但在C++中却是char*
+可以被重载,但全是内建型别的+不可以重载,如果内建型别之间的操作符被重载的话,一切都乱套了。
假设可以重载,那么应该是
const string operator+( const char* a, const char* b )
还是
const char* operator+( const char* a, const char* b )
?
如果是第一个,那么就是说必须包含<string>才可以进行字符串的+操作,如果是第二个,那么返回值指向哪里?
我觉得你有一个认识不是很深刻,这就是“字符串 和 stl::string 是两种完全不同的类型”
std::string anotherMessage = " My " + " world," + hello; 应当写成 std::string anotherMessage = std::string(" My ") + " world," + hello;
多谢几位牛人的指点,特别是星星,Thank you with all my heart!