我写了以下代码:
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> myObject
as是否有可能const
?如果不是,不这样做的原因是什么?在哪些情况下,这种优化将难以实施/推断它是可能的并且在这里/等等......?