2015-12-03 124 views
0

在靜態方法中,OOP(封裝)對象的私有屬性改變是否清楚?靜態方法改變私有屬性

example.h文件

Class Example { 
private: 
    static int a1; 
public: 
    static void doSomething(); 

Example.cpp

void Example::doSomething(){ 
    Example::a1=5 
} 
+0

你想改變靜態方法中的私人attrs?這是你的問題嗎? –

+0

是的,我想改變attrs在靜態方法,明確=好的做法或類似的東西,如果它是好的,當我這樣做 – Davidm176

+0

只要你記錄調用'doSomething'的副作用,這是非常好的。 –

回答

0

一般情況下,使用靜態私有屬性,當你想繼承類的類的每個對象(物體是有用)共享相同的屬性。在這種情況下,該屬性只有一個版本。因此,實現一個靜態方法讓你可以在不使用特定對象的情況下訪問這個屬性,就像全局函數一樣,但是全局函數不能像靜態方法那樣訪問類的私有屬性。

這些類型的屬性和方法被稱爲類屬性類方法,由於它們的共享其內容的特性。

在你的榜樣,把doSomething()static會給你訪問a1直接使用Example::doSomething()其他地方的項目,它的值改爲5

使用這些概念的一個例子是使用計數器來跟蹤某個類的對象數量。計數器將在構造函數中遞增並在析構函數中遞減。將使用ClassName::getPrivateStaticAttribute()訪問私有靜態屬性的值來實現靜態方法。請注意,您仍然可以使用對象(使用 - >或。)調用getPrivateStaticAttribute(),但該方法將沒有this指針。