溫馨提示×

C++常量成員函數能修改對象嗎

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

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

常量成員函數可以調用其他非常量成員函數,但不能通過this指針修改對象的狀態。如果嘗試這樣做,編譯器將報錯。

以下是一個簡單的示例:

#include <iostream>

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

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

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

private:
    int value_;
};

int main() {
    MyClass obj(10);

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

    // 嘗試調用常量成員函數來修改對象的狀態,將導致編譯錯誤
    // obj.getValue() = 30;

    return 0;
}

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

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女