在函数声明之后放置const是什么意思?

时间:2014-10-15 10:56:10

标签: c++ const

我可以毫无问题地运行以下代码。我注意到main中的a.bytes和bytes都改为" B"。 那么" const"在A的get()函数中做什么?在我改变我从A得到的字节的用法中会出现问题吗?

注意:我不在乎A的价值是否会发生变化。我只是想知道我是否会遇到不可预测的问题,特别是当我在解构函数中释放A时,无论我采用主要字节中的任何疯狂操作。

class A{
public:
    A(){
        bytes = (char *)malloc(12);
        bytes[0] = 'A';
        bytes[1] = 0;
    }
    ~A(){
        free(bytes);
    }
    char * get() const{
        return bytes;
    }
    char * bytes;
};

int _tmain(int argc, _TCHAR* argv[])
{
    A a;
    char * bytes = a.get();
    bytes[0] = 'B';

    return 0;
}

4 个答案:

答案 0 :(得分:4)

它只是意味着成员函数不会(并且不能)修改对象内的任何内部数据。

它还会使成员函数中的this变量为const

答案 1 :(得分:3)

这意味着该函数不会修改类的成员(只能修改具有关键字mutable的成员)。 这也意味着该函数不会调用该类的其他非const函数。

答案 2 :(得分:1)

要添加注释,当const放在成员函数之后,这意味着传递给成员函数的“this”指针将是const, 因此,仅允许可变和/或只读操作。

答案 3 :(得分:0)

这意味着您只能修改对象的mutable成员变量。如果您有一个const对象,但仍希望使用一些非变异成员函数,这将非常有用。