c++ - 在类的函数中使用 'const'

标签 c++ oop class constants

我在类中看到了很多将 const 关键字放在函数后面的用法,所以我想知道它是关于什么的。我在这里阅读了smth:http://duramecho.com/ComputerInformation/WhyHowCppConst.html .

它说使用 const 是因为函数“可以尝试更改对象中的任何成员变量”。如果这是真的,那么它应该在任何地方使用,因为我不希望以任何方式更改或更改任何成员变量。

class Class2
{ void Method1() const;
  int MemberVariable1;} 

那么, const 的真正定义和用途是什么?

最佳答案

可以在 const 对象上调用 const 方法:

class CL2
{
public:
    void const_method() const;
    void method();

private:
    int x;
};


const CL2 co;
CL2 o;

co.const_method();  // legal
co.method();        // illegal, can't call regular method on const object
o.const_method();   // legal, can call const method on a regulard object
o.method();         // legal

此外,它还告诉编译器 const 方法不应该改变对象的状态,并且会捕捉到这些问题:

void CL2::const_method() const
{
    x = 3;   // illegal, can't modify a member in a const object
}

使用 mutable 修饰符对上述规则有一个异常(exception),但在您涉足该领域之前,您应该首先熟悉 const 的正确性。

关于c++ - 在类的函数中使用 'const',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2157458/

相关文章:

javascript - 在 JavaScript 中,如何访问父类(super class)实例的属性?

c++ - 音乐没有开始

具有默认参数的 C++ 模板

java - 当 Java、C++ 或任何面向对象语言中的属性是动态和可变的时,如何创建一个类?

Java split() 返回一个空的第一个元素

java - Node 成员是否持有另一个 Node 或者它在 java 中的地址

c# - 将一个类复制到另一个?

c++ - 概述 rpg 平铺空间

c++ - 使用 Mongoose Web 服务器进行客户端身份验证或相互身份验证

c++ - 如何在导入另一个库的库中修复 "invalid use of non-static member function"