在OOP(封装)中是否清楚在静态方法中更改对象的私有属性?
example.h文件
foreach (string searchField in allFields) {
innerExpr.Add(new WildcardQuery(new Term(searchField, searchParam)), Occur.SHOULD);
}
Example.cpp
Class Example {
private:
static int a1;
public:
static void doSomething();
答案 0 :(得分:0)
通常,当您希望类的每个对象(以及继承类的对象)共享同一属性时,使用静态私有属性非常有用。在这种情况下,有一个唯一的属性版本。因此,实现静态方法使您可以在不使用特定对象的情况下访问此属性,就像全局函数一样,但是全局函数无法访问静态方法等类的私有属性。
这些类型的属性和方法称为类属性和类方法,因为它们具有共享内容的特性。
在您的示例中,将doSomething()
添加到static
将允许您直接使用项目中其他位置的a1
访问Example::doSomething()
,将其值更改为5
}。
使用这些概念的一个例子是使用计数器来跟踪某个类的对象数量。计数器将在构造函数中递增,并在析构函数中递减。将使用ClassName::getPrivateStaticAttribute()
访问私有静态属性的值来实现静态方法。请注意,您仍然可以使用对象(使用 - >或。)调用getPrivateStaticAttribute()
,但该方法没有this
指针。