我写了以下代码:
class MyObjectHolder {
public:
std::vector<int> getMyObject() const {
return myObject;
}
private:
std::vector<int> myObject;
};
在我的程序的某个时刻,我尝试使用该getMyObject方法并仅const在检索到的对象上使用方法:
const std::vector<int> myObject = myObjectHolder.getMyObject();
myObject.size();
int a = myObject.front();
现在,编译器是否有可能优化此代码以便不完成任何副本
std::vector<int>?编译器是否有可能确定我只使用
const检索到的对象上的方法(假设mutable它背后没有发生废话)并且它不会制作对象的任何副本并对成员执行这些const操作private相反MyObjectHolder?如果是,如果我没有明确声明
const std::vector<int> myObjectas是否有可能const?如果不是,不这样做的原因是什么?在哪些情况下,这种优化将难以实施/推断它是可能的并且在这里/等等......?