vector<string> vec(10, string(10, 'a'));
我的问题是关于string(10, 'a')
:
答案 0 :(得分:2)
是否返回匿名变量?
没有。它返回一个临时对象,它不是变量的定义(§3.1/ 6 [basic]):
变量是由引用声明引入的 非静态数据成员或对象。变量的名称表示 参考或对象。
来源:C ++ 11工作草案n3337
不,它不会。它没有名字,到那时它已经被摧毁了。当初始化语句结束时,变量会被清除吗?
它会被复制到向量?
是的,临时对象将被复制到向量中,然后被销毁。这原则上发生了;在实践中,只要这样做不影响可观察的行为,就允许编译器优化临时对象的创建,复制和销毁。
与c ++ 11有什么不同(此时)?
我无法确定,但我不记得在这件事上C ++ 98,C ++ 03和C ++ 11之间有任何具体的区别。