为什么可以做到
const string exclam = "!";
const string str = exclam + "Hello" + " world";
Run Code Online (Sandbox Code Playgroud)
而且不可能这样做:
const string exclam = "!";
const string str = "Hello" + " world" + exclam;
Run Code Online (Sandbox Code Playgroud)
我知道(虽然不明白为什么)不允许这样做:
const string str = "Hello" + " world" + "!";
Run Code Online (Sandbox Code Playgroud)
因为它将被解释为const char[6] + const char[6] + const char[1],所以从另一方面来说,为什么不允许这样做,或为什么它使用char[]而不是string.
Jam*_*lis 19
+运算符是左关联的(从左到右计算),因此+首先评估最左边的运算符.
exclam是一个std::string重载的对象,operator+以便以下两个执行连接:
exclam + "Hello"
"Hello" + exclam
Run Code Online (Sandbox Code Playgroud)
这两个都返回一个std::string包含连接字符串的对象.
但是,如果"添加"的前两个是字符串文字,如:
"Hello" + "World"
Run Code Online (Sandbox Code Playgroud)
没有涉及类类型对象(这里没有std::string).字符串文字转换为指针,没有内置的operator+指针.
| 归档时间: |
|
| 查看次数: |
3462 次 |
| 最近记录: |