我想我还没有掌握返回const的东西背后的正确理念。
如果我有一个返回const值的函数,是不是意味着我在返回之后无法更改该值?
为什么编译器允许我将const转换为非const变量?
或者它只适用于const指针?
const int foo(int index) {
return ++index;
}
int main(){
int i = foo(1); // why can I do this?
++i;
return 0;
}
答案 0 :(得分:4)
你做的相当于:
public static int GetInt(this DataRow row, string fieldName) {
return Convert.ToInt32(row[fieldName]);
}
换句话说,您正在制作一个const对象的副本,并修改所述副本。
请注意,返回myRow.GetInt("Int_Field_Name")
值的值为ehm。对于内置类型,它并不重要。对于用户定义的类型,它可以防止修改“临时”对象,但代价是阻止移动语义。从C ++ 11开始,建议不要返回const值。