【发布时间】:2014-03-02 18:20:55
【问题描述】:
我想问一个简单的问题
例如在我的私有成员中,我声明了静态成员。
static int id;
并且在公共场合我已经为这个 id 使用了 getter 函数
static int getID() const;
编译器给我一个错误但是当我不使用 const 时它没有给出任何错误,因为这只是 getter 它应该是恒定的,请告诉我原因。
【问题讨论】:
我想问一个简单的问题
例如在我的私有成员中,我声明了静态成员。
static int id;
并且在公共场合我已经为这个 id 使用了 getter 函数
static int getID() const;
编译器给我一个错误但是当我不使用 const 时它没有给出任何错误,因为这只是 getter 它应该是恒定的,请告诉我原因。
【问题讨论】:
这是一个static 函数,它不能是const,因为它不作用于任何特定的类实例。这意味着此类函数没有指向任何特定实例的this 指针(作为隐藏参数隐式传递)。你应该写
static int id;
static int getID();
也可以使这个函数非static
int getID() const;
然而,这样的函数通常应该是静态的,只要它不需要访问特定对象的表示。
【讨论】: