c ++中类的静态成员

时间:2011-10-07 10:32:53

标签: c++ static

我有一个关于c ++中类的静态成员的问题,因为静态成员属于类而不是类的任何实例,所以静态成员应该声明为public,private吗?

3 个答案:

答案 0 :(得分:8)

是否声明成员公开或私有与其是否为静态无关。您可以将静态成员设为公共成员或私有成员;根据具体情况,这两种用途都是可以接受的。

基本上,如果您希望或需要类外部的组件可以直接访问静态成员,请将其公开。否则,将其设为私有。

答案 1 :(得分:2)

实际上,静态成员由该类的所有实例共享。例如,如果它是数据成员,您可以使用is来计算创建了多少个类的实例。您可以根据自己的需要将其声明为私人或公共或受保护。

答案 2 :(得分:0)

您所说的是将一些静态类成员私有化为该类,因此该类的实例无法访问它们。不幸的是,我认为c ++没有任何语法机制可以用来在编译时强制执行。您可能能够完成运行时检查,但至少可以说是错综复杂的。

真的,我不确定你为什么要做你的要求。如果您已经拥有并编辑该类,则还可以编辑所有实例方法以确保它们不使用静态成员。如果你想尝试强制执行它,你必须在静态成员旁边写一个重要的评论说“实例方法不应该使用它”,并确保你的团队知道它。一般来说,你不必对公共/私人等访问者修饰符有所了解,以便编写好的代码,所以我只想说不要担心试图强制执行你的建议。

其他面向对象的语言可以提供您所要求的内容,因为它们在类和实例之间进行了更多的区分。例如Scala,Smalltalk。