静态方法改变私人属性

时间:2015-12-03 20:09:02

标签: c++ oop

在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(); 

1 个答案:

答案 0 :(得分:0)

通常,当您希望类的每个对象(以及继承类的对象)共享同一属性时,使用静态私有属性非常有用。在这种情况下,有一个唯一的属性版本。因此,实现静态方法使您可以在不使用特定对象的情况下访问此属性,就像全局函数一样,但是全局函数无法访问静态方法等类的私有属性。

这些类型的属性和方法称为类属性类方法,因为它们具有共享内容的特性。

在您的示例中,将doSomething()添加到static将允许您直接使用项目中其他位置的a1访问Example::doSomething(),将其值更改为5 }。

使用这些概念的一个例子是使用计数器来跟踪某个类的对象数量。计数器将在构造函数中递增,并在析构函数中递减。将使用ClassName::getPrivateStaticAttribute()访问私有静态属性的值来实现静态方法。请注意,您仍然可以使用对象(使用 - >或。)调用getPrivateStaticAttribute(),但该方法没有this指针。