1. string s6 {0};
2. string s5 {'a','b',7};
cout << "S6 ::: " << s6 << endl;
cout << "S5 ::: " << s5 << endl;
ab
异常行为。在QT5上运行。。 MacO上的编译器叮当声
在两种情况下
1. string s6 {0};
2. string s5 {'a','b',7};
使用了接受初始化列表的构造函数。
在第二种情况下,整数文字7可以用char类型表示。因此,没有缩小的转换。
考虑以下程序。
#include <iostream>
#include <string>
int main()
{
std::string s6 {0};
std::string s5 {'a','b',7};
std::cout << s6.size() << ": ";
for ( char c : s6 ) std::cout << static_cast<int>( c ) << ' ';
std::cout << '\n';
std::cout << s5.size() << ": ";
for ( char c : s5 ) std::cout << static_cast<int>( c ) << ' ';
std::cout << '\n';
return 0;
}
其输出为
1: 0
3: 97 98 7