C++ 常量成员函数 int getValue() const;

在 C++ 中,函数签名中的 const 关键字有特定的意义和作用。对于 int getValue() const;const 关键字位于函数签名的末尾,表示该成员函数是一个常量成员函数(const member function)。这意味着在这个函数内部不能修改对象的任何成员变量(除非它们是用 mutable 关键字声明的)。

具体解释

  1. 常量成员函数

    • 一个常量成员函数承诺不修改对象的状态。也就是说,该函数不能修改类的成员变量,也不能调用其他非 const 成员函数。
    • 声明一个成员函数为 const,可以保证该函数不会对对象进行任何修改操作,这是一个很好的编程习惯,可以提高代码的安全性和可读性。
  2. 语法

    • 在成员函数的签名末尾添加 const 关键字,即声明该函数为常量成员函数。
    • const 成员函数内部,无法调用任何非 const 成员函数,因为非 const 成员函数可能会修改对象的状态。

示例代码

以下是一个示例类,展示了常量成员函数的用法:

class Example {
private:
    int value;
public:
    Example(int v) : value(v) {}

    // 常量成员函数,不能修改成员变量
    int getValue() const {
        return value;
    }

    // 非常量成员函数,可以修改成员变量
    void setValue(int v) {
        value = v;
    }

    // 常量成员函数,尝试修改成员变量会导致编译错误
    void modify() const {
        // value = 10; // 错误:不能在常量成员函数中修改成员变量
    }
 		void modifyValue() {
        // 这个函数可以修改成员变量
        value = 42;
    }
    // 常量成员函数,可以调用其他常量成员函数
    bool nearestFacetOnRay() const {
        return getValue() > 0; // 示例实现
    }
};

int main() {

 		const Example obj(10);
    obj.nearestFacetOnRay(); // 可以调用 const 成员函数
    std::cout << "Member value: " << obj.getValue() << std::endl;

    // obj.modifyMember(); // 错误,不能调用非 const 成员函数

    Example nonConstObj(20);
    nonConstObj.modifyValue(); // 可以调用非 const 成员函数
    std::cout << "Member value after modification: " << nonConstObj.getValue() << std::endl;

    return 0;
}

小结

bool nearestFacetOnRay() const; 中,const 关键字表示这是一个常量成员函数,承诺不会修改对象的状态。这种方式可以提高代码的安全性和可读性,使代码更易于维护和理解。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值