[C++] const成员函数与返回值是指针

当一个成员函数被声明为 const 时,这意味着这个函数不能修改类的任何成员变量(除非这些成员变量被声明为 mutable)。例如:

class MyClass {
public:
    int value;
    void print() const {
        // value = 10; // 错误:不能修改成员变量
        std::cout << value << std::endl;
    }
};

在这个例子中,print 是一个 const 成员函数,它不能修改 value

const 成员函数返回 const 指针

当一个成员函数被声明为 const 时,它承诺不会修改任何成员变量。因此,它不能返回一个可以修改成员变量的指针。
所以当在一个const成员函数中,返回值为指针时,返回值也需要是const

例如:

class MyClass {
public:
    int value;
    int* getPointer() const { // 错误:不能返回非 const 指针
        return &value;
    }
};

这个代码会报错,因为 getPointer 是一个 const 成员函数,它不能返回一个可以修改 value 的指针。

应该为

class MyClass {
public:
    int value;
    const int* getPointer() const { // 错误:不能返回非 const 指针
        return &value;
    }
};
posted @ 2025-06-04 19:49  丘狸尾  阅读(13)  评论(0)    收藏  举报