c++ - const 成员函数/方法的用处

标签 c++ function constants

<分区>

我想知道声明函数 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 意味着thisconst ClassName* 类型而不是Classname*。其余规则是该定义的直接结果。

我认为潜在的性能差异在这里并不重要。

关于c++ - const 成员函数/方法的用处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27573172/

相关文章:

c++ - C++ 中的常量变量

php - 为什么null可以写成反斜杠?

c++ - 确保一个功能一次执行一次

c++ - 解决 boost.python 中的重载

python - 将 math.erf 应用于数组

使用类成员的 C++ 回调

function - 'closure' 和 'lambda' 之间有什么区别?

C++ 和内联汇编代码在一个程序中具有相同的输出,但在另一个程序中具有不同的输出

c++ - 为什么我不能分配这个指针?

c++ - const 元素数组的类型