C++ 为什么要使用常量成员函数?
我试图理解类getter和setter函数 我的问题是: 如果我设计的函数只从其类中获取状态(“getter”函数),为什么要将其标记为“const member function”? 我的意思是,如果我的函数设计为不改变其类的任何属性,为什么要使用const成员函数? 我不明白,请:( 例如:C++ 为什么要使用常量成员函数?,c++,function,class,constants,C++,Function,Class,Constants,我试图理解类getter和setter函数 我的问题是: 如果我设计的函数只从其类中获取状态(“getter”函数),为什么要将其标记为“const member function”? 我的意思是,如果我的函数设计为不改变其类的任何属性,为什么要使用const成员函数? 我不明白,请:( 例如: int GetValue() {return a_private_variable;} 及 真正的区别是什么?类的常量实例只能调用常量函数 拥有一个类的const实例有助于使程序更加稳定,因为这样您就
int GetValue() {return a_private_variable;}
及
真正的区别是什么?类的常量实例只能调用常量函数 拥有一个类的const实例有助于使程序更加稳定,因为这样您就不能意外地修改实例
在您的例子中,函数的作用完全相同,但不一定非得如此。当您将成员函数声明为
const
时,如
int GetValue() const;
然后告诉编译器它不会修改对象中的任何内容
这也意味着您可以在常量对象上调用成员函数。如果您没有const
修饰符,则无法在定义为const
的对象上调用它。您仍然可以在非常量对象上调用const
成员函数
还要注意,const
修饰符是成员函数签名的一部分,这意味着您可以使用非const函数重载它
int GetValue() const;
int GetValue();
同班。
<代码> const 可以在C++中的三个不同地方出现。
例1:const Object obj1;
- obj1是一个
对象。这意味着您不能更改此对象上的任何内容。此对象只能调用const
成员函数,如const
int myMethod()const{//do something}
- 这是一个
方法。如果在类中声明,则它将是const
成员函数。这些是const
变量可以调用的方法类型const
int-myMethod(const-Object&x){//用x做点什么}
- 这是一个采用
参数的方法。这意味着const
中的逻辑不允许更改与myMethod
有关的任何内容。还要注意的是,参数是通过引用传递的,而不是通过副本传递的。我喜欢将其视为只读类型的方法x
当你在开发别人使用的软件时,最好不要让他们破坏他们不知道不应该破坏的东西。在这种情况下,你可以将变量、方法和参数约束为
const
,以确保合同得到遵守。我试图总结我在大学里学到的主要思想,但在C++中,在代码> > const <代码>下有很多资源。如果您想知道更多,请查看此。我可能还记得一些错误,因为我在C/C++领域中已经有一段时间了。< /p>声明为int GetValue() const;
int GetValue();