静态成员变量和方法

时间:2009-11-12 01:08:37

标签: c++ static

如果我有一个包含静态成员变量的C ++类,那么这个变量的访问器方法是否也需要是静态的?此外,如果我内联此方法,是否会出现任何问题?

2 个答案:

答案 0 :(得分:7)

它不是需要是静态的,但是除非它正在对类的特定实例执行特定的操作,否则没有真正的理由不使它无论如何都是静态的。

这不应该以任何方式影响内联。

答案 1 :(得分:3)

编写访问器方法的整个目的是隐藏外部用户对类的某些属性的实现。你想要隐藏的内容以及你不想隐藏的内容只有你自己才能决定。像这样的决定不能机械地做出,因为“因为数据成员是静态的,所以访问者也应该是静态的”。这是一种毫无希望的缺陷方法。

同样,编写访问器的目的是将用户与关于底层数据成员的所有(或一些)知识分离。数据成员甚至可能不存在。用户不需要知道它是否物理存在。数据成员本身可能在今天存在,明天就会消失。用户不应该关心这一点。这是通过强制用户使用访问者来实现的。

因此,在您的情况下,通过使访问器静态,您自动声明并公开相应属性特定于整个类的事实,而不是特定于该类的特定对象。再次注意,数据成员的静态不在这里:没有人会知道或关心该访问者后面是否有物理数据成员。

通过使访问者非静态,您自动声明并公开该属性可能特定于该类的特定对象的事实。

这应该指导您的决定。您没有提供有关该物业的足够详细信息,因此我们无法帮助您做出决定。