【发布时间】:2019-03-05 06:03:23
【问题描述】:
我查看了以下线程,但他们没有谈论地址返回函数的constness:
(1)Returning a pointer to a vector element in c++
(2)It's safe to return address of a std::map value?
在代码中:
class test_c{
private:
std::vector <double> dblvec;
double *dblarray;
public:
double *AddVecElem(int index){return &dblvec[index];} //Fine
double *AddVecElem(int index) const {return &dblvec[index];} //compiler error "Return value type does not match function type"
double *AddArrElem(int index){return &dblarray[index];}//Fine
double *AddArrElem(int index) const {return &dblarray[index];}//Fine
};
只有将向量元素的地址作为const 函数返回的情况才会产生编译器错误。
这是为什么?返回向量元素的地址如何影响对象的状态?
【问题讨论】:
-
"返回向量元素的地址如何影响对象的状态?" -- 因为你可以通过指向非常量元素。通过从
const函数返回double const*来解决此问题。 -
@zett42 如果
const函数也返回双精度数组,情况会不会如此?