我正在尝试理解一段C ++代码,并且我已经明白我不明白以下内容的含义:
以下内容在函数原型文件中定义,即(.h)
我感到困惑的是const参数:
ofMesh getImageMesh() const;
我的意思是,函数/方法返回一个ofMesh类,getImageMesh()没有参数和 然后是const。为什么“const”会像这样使用?
答案 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
对象调用它。