C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在C中使用方法时,const运算符意味着什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
给出这样的声明:
class A {
public:
    void Foo() const;
};

这是什么意思?

Google表示:

但我觉得有点混乱有谁能在更好的条件吗?

谢谢.

解决方法

你的班级A的变化.
class A {
public:
    void Foo() const;
    void Moo();

private:
    int m_nState; // Could add mutable keyword if Desired
    int GetState() const   { return m_nState; }
    void SetState(int val) { m_nState = val; }
};

const A *A1 = new A();
A *A2 = new A();

A1->Foo(); // OK
A2->Foo(); // OK

A1->Moo(); // Error - Not allowed to call non-const function on const object instance
A2->Moo(); // OK

函数声明中的const关键字向编译器指示该函数是合约义务不修改A的状态.因此,您无法调用A :: Foo中的非const函数,也不能更改成员变量的值.

为了说明,Foo()可能不会调用A :: SetState,因为它被声明为非const,A :: GetState是可以的,因为它被明确声明为const.除非用关键字mutable声明,否则成员m_nState可能不会被更改.

const的这个用法一个例子是“getter”函数获取成员变量的值.

@H_274_4@mutable关键字指示编译器接受对成员变量的修改,否则会导致编译器错误.当函数需要修改状态时使用,但是对象被认为在逻辑上是一致的(常数),而不管修改.

大佬总结

以上是大佬教程为你收集整理的在C中使用方法时,const运算符意味着什么?全部内容,希望文章能够帮你解决在C中使用方法时,const运算符意味着什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。