dan*_*ood 0 c++ const function
我想知道声明一个函数是否有任何好处const.
我知道这意味着该方法无法修改任何非静态类成员,但这样做的唯一目的是防止某人将该功能重新实现为修改非静态成员的东西,还是存在性能差异?如果存在性能差异,编译器通常可能比人类做得更好,例如inline功能吗?
只是为了澄清,我问的是以下成员函数之间的区别:
float getWidth() const
{
return width;
}
float getWidth()
{
return width;
}
Run Code Online (Sandbox Code Playgroud)
我知道这意味着该函数无法修改任何非静态类成员
不,const并不意味着.这意味着必须允许您在常量对象上调用该函数,这是一件很重要的事情.即使您实际上没有修改非const成员函数中的任何非静态数据成员,也不允许在常量对象上调用它.
struct A
{
void f()
{
}
};
void g(const A& a)
{
a.f(); // error
}
Run Code Online (Sandbox Code Playgroud)
从技术上讲,const意味着这是类型const ClassName*而不是Classname*.其余规则是该定义的直接后果.
我不认为潜在的性能差异在这里非常重要.
| 归档时间: |
|
| 查看次数: |
1100 次 |
| 最近记录: |