函数原型中的const参数

时间:2014-01-23 09:01:21

标签: c++ const

我正在尝试理解一段C ++代码,并且我已经明白我不明白以下内容的含义:

以下内容在函数原型文件中定义,即(.h)

我感到困惑的是const参数:

ofMesh getImageMesh() const;

我的意思是,函数/方法返回一个ofMesh类,getImageMes​​h()没有参数和 然后是const。为什么“const”会像这样使用?

3 个答案:

答案 0 :(得分:2)

这是const方法,这意味着您可以在const个对象上调用它,它不会修改非mutable成员,也不会调用其他非const方法。struct X { void foo(); int x; void goo() const; }; void X::goo() const { x = 3; //illegal foo(); //illegal } //... const X x; x.foo(); //illegal x.goo(); //OKAY 方法。

{{1}}

答案 1 :(得分:2)

基本上,这意味着该方法不会修改该类实例的状态。这意味着它也不会调用会改变类实例状态的其他成员。

行:

class Foo
{
   int m_foo;
   int GetFoo() const
   {
       return m_foo;
   }
}

编译错误:

class Foo
{
   int m_foo;
   int GetFoo() const
   {
       m_foo += 1;
       return m_foo;
   }
}

有更深层次的考虑因素,例如通过引用传递时的性能优势 - 如果您想要更深入,搜索的术语是'const correctness'。

答案 2 :(得分:0)

此行中的const表示它是一个常量函数。这意味着它无法修改其中的对象。

因此,如果声明成员函数const,则告诉编译器可以为const对象调用该函数。未明确声明为const的成员函数将被视为将修改对象中的数据成员的成员函数,并且编译器将不允许您为const对象调用它。