给出这个定义:
vector<some_struct_t> lots_of_stuff;
事实上,vector::at
返回一个引用,这段代码对我来说很有意义:
some_struct_t & ref_element = lots_of_stuff.at(0);
但是,这段代码也可以编译并且似乎可以工作:
some_struct_t val_element = lots_of_stuff.at(0);
非引用如何在这里工作?是否调用了复制构造函数?为什么这有效?
最佳答案
非引用会从返回的引用复制一份到您的对象。对对象的更改不会像引用版本那样应用于 vector 中的对象。
关于c++ - vector::引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4911187/