溫馨提示×

C++常量成員函數(shù)能修改對象嗎

c++
小樊
81
2024-11-09 03:17:30
欄目: 編程語言

C++中的常量成員函數(shù)(const member function)不能修改對象的狀態(tài),即它們不能修改對象的任何非靜態(tài)成員變量

常量成員函數(shù)可以調(diào)用其他非常量成員函數(shù),但不能通過this指針修改對象的狀態(tài)。如果嘗試這樣做,編譯器將報(bào)錯(cuò)。

以下是一個(gè)簡單的示例:

#include <iostream>

class MyClass {
public:
    MyClass(int value) : value_(value) {}

    // 非常量成員函數(shù),可以修改對象的狀態(tài)
    void setValue(int value) {
        value_ = value;
    }

    // 常量成員函數(shù),不能修改對象的狀態(tài)
    int getValue() const {
        return value_;
    }

private:
    int value_;
};

int main() {
    MyClass obj(10);

    // 調(diào)用非常量成員函數(shù),可以修改對象的狀態(tài)
    obj.setValue(20);
    std::cout << "Value: " << obj.getValue() << std::endl; // 輸出 "Value: 20"

    // 嘗試調(diào)用常量成員函數(shù)來修改對象的狀態(tài),將導(dǎo)致編譯錯(cuò)誤
    // obj.getValue() = 30;

    return 0;
}

在這個(gè)示例中,getValue()是一個(gè)常量成員函數(shù),它不能修改對象的狀態(tài)(即不能修改value_變量)。而setValue()是一個(gè)非常量成員函數(shù),它可以修改對象的狀態(tài)。

0