<分区>
我想知道声明函数 const
是否有任何优势。
我知道这意味着该方法不能修改任何非静态类成员,但这样做的唯一目的是防止有人重新实现该函数作为修改的东西非静态成员,还是也存在性能差异?如果存在性能差异,编译器是否通常会比人类做得更好,例如 inline
函数?
为了澄清,我想问的是以下成员函数之间的区别:
float getWidth() const
{
return width;
}
float getWidth()
{
return width;
}
<分区>
我想知道声明函数 const
是否有任何优势。
我知道这意味着该方法不能修改任何非静态类成员,但这样做的唯一目的是防止有人重新实现该函数作为修改的东西非静态成员,还是也存在性能差异?如果存在性能差异,编译器是否通常会比人类做得更好,例如 inline
函数?
为了澄清,我想问的是以下成员函数之间的区别:
float getWidth() const
{
return width;
}
float getWidth()
{
return width;
}
最佳答案
I know that it means that the function cannot modify any non-static class members
不,const 不是那个意思。这意味着必须允许您在常量对象上调用该函数,这是一件很重要的事情。即使您实际上没有修改非常量成员函数中的任何非静态数据成员,也不允许在常量对象上调用它。
struct A
{
void f()
{
}
};
void g(const A& a)
{
a.f(); // error
}
从技术上讲,const 意味着this 是const ClassName*
类型而不是Classname*
。其余规则是该定义的直接结果。
我认为潜在的性能差异在这里并不重要。
关于c++ - const 成员函数/方法的用处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27573172/