【发布时间】:2019-12-10 11:23:34
【问题描述】:
1. string s6 {0};
2. string s5 {'a','b',7};
cout << "S6 ::: " << s6 << endl;
cout << "S5 ::: " << s5 << endl;
- 预期未定义的行为“nullptr”,但会打印一个空字符串。
- 打印
ab不是预期的行为。
在 QT5 上运行。. MacOs 上的编译器叮当声
【问题讨论】:
-
“期望未定义的行为..”是什么意思?当有 ub 时,你不应该期待任何东西
-
你期望得到什么作为 2) 的输出?
-
首先,您为什么会期待未定义的行为?其次,你怎么知道你没有观察到未定义的行为?
-
尝试第二个
{'a', 'b', 99},你会在输出中看到abc。 -
这就是为什么常见的建议“总是用 { } 初始化”可能是罪魁祸首...
标签: c++ string constructor initialization initializer-list