我无法理解类中私有静态属性的使用:
- > private表示如果我正确
,则只能从类本身访问这些属性- > static表示属性属于类本身而不是对象,如果我仍然正确,则允许在不创建对象的情况下访问它
因此,我无法想象是否使用了私有静态属性。
提前感谢您的任何帮助:)
谦信
答案 0 :(得分:6)
您自己说过:如果您想要一个与该类关联但不属于任何对象(static
)的变量,那么只能在类本身(private
)内访问。
作为一个具体的例子,这里有一个计算自身实例的类:
class countable {
private:
static unsigned count;
public:
countable() {++count;}
countable(const countable&) {++count;}
~countable() {--count;}
static unsigned instance_count() {return count;}
};
答案 1 :(得分:3)
这是一个可以扩展你想象力的例子:
class Singleton
{
public:
static Singleton* getInstance();
~Singleton();
private:
Singleton();
static Singleton* instance;
};
答案 2 :(得分:1)
这是另一个可能expand your imagination的例子:
class NotAThreadSafeExample {
public:
NotAThreadSafeExample () { ++ debugReferenceCount; }
~NotAThreadSafeExample () { -- debugReferenceCount; }
static int getDebugReferenceCount () { return debugReferenceCount; }
private:
static int debugReferenceCount;
};
或者:
class Example {
private:
static const int FIXED_COLUMN_WIDTH = 32;
};
或者甚至可能是这样的,在适当的时候atomicIncrement
留给你的想象,例如Windows上的InterlockedIncrement()
或GCC的__sync_add_and_fetch()
;相应地选择整数类型record_id_t
) :
class Record {
public:
Record () : id(atomicIncrement(&nextId)) { }
record_id_t getId () const { return id; }
private:
static volatile record_id_t nextId;
record_id_t id;
};
或者您可以想象的任何其他用途,用于static
变量,该变量无法在类或friend
之外访问。
答案 3 :(得分:0)
friend
类或函数可以访问此静态成员。