可以非靜態函數修改靜態變量在C++快速的問題:可以非靜態函數修改靜態變量在C++
2
A
回答
10
是的,非靜態成員函數可以只要修改靜態數據成員作爲數據成員的可見性允許它。
1
是的,看到this example一個小樣本程序。
相反的靜態函數不能修改規則的成員變量的方式正式成員函數即可。
0
是的,你可以。
想想,好像他們是表徵類,而「非實例成員」表徵實例屬性「靜態成員」的。
類定義了一個概念,而實例出現了這個概念。 一個愚蠢的例子是類Human
是一個概念,而你,安迪是一個實例。你是60億人之中的一個人。
人的觀念說,所有的人有四肢,頭,眼等。這些是實例字段。每個人實例都有自己的四肢,頭,眼...
我可以根據他/她的職業專長的人的觀念。 讓我們考慮一個ComputerEngineer
類,很明顯,它定義了計算機工程師。 電腦工程師的任何實例爲人,仍然有四肢,頭,眼...
的ComputerEngineer
類,但是,可以建模,以便它有一個限定詞(或屬性)最低工資說類別sindicate允許。讓我們把它叫做minimumWage
這是一個情況是相同的屬性必須爲所有的類實例的共同價值。
請注意,儘管此minimumWage
不是實例成員,並且每個實例的值不能相同,但它仍與該概念有關,因此它可以被訪問是合理的。
以下假代碼是在具有一個實例方法訪問的靜態成員的意義上有效的:
class Human
{
protected:
Limb leftArm;
Limb leftLeg;
Limb rightArm;
Limb rightLeg;
};
class ComputerEngineer : public Human
{
protected:
static double _minimumWage;
double _wage;
public:
wage(double w) // non-static member function can only be called by instances.
{
if (w < minimumWage)
throw "You're gonna have trouble with the union!";
_wage = w;
}
minimumWage(double w)
{ _minimumWage = w; }
};
相關問題
- 1. 非靜態方法可以修改靜態變量
- 2. 靜態函數和非靜態變量
- 3. 靜態函數可以在php中訪問非靜態變量嗎?
- 4. 靜態與非靜態變量C++
- 5. 靜態函數中的靜態變量?
- 6. 在swift類的靜態函數中訪問非靜態常量
- 7. 靜態類中的靜態變量和非靜態類中的靜態變量
- 8. 從C++中的靜態方法訪問非靜態類變量
- 9. 靜態成員變量可以調用非靜態成員函數嗎?
- 10. 靜態線程函數訪問非靜態類成員在C++
- 11. Android的靜態VS非靜態問題
- 12. 問題的靜態變量
- 13. 一個類的靜態函數可以訪問全局靜態變量嗎?
- 14. 靜態函數調用非靜態函數在C++
- 15. 非靜態/靜態變量錯誤
- 16. 從靜態函數調用非靜態變量
- 17. 非靜態與靜態函數和變量
- 18. 非靜態變量和靜態函數調用jsp
- 19. 靜態/非靜態方法問題
- 20. 靜態和非靜態問題
- 21. 靜態變量問題
- 22. 靜態變量問題
- 23. 訪問靜態變量的報價從靜態函數
- 24. 全局靜態變量vs函數中的靜態變量?
- 25. 有關C++中的靜態函數的快速提問
- 26. 在C++中更新靜態函數中的非靜態成員
- 27. 像C函數中的靜態變量
- 28. 從靜態函數獲取靜態變量C++
- 29. 靜態變量和函數
- 30. 修改靜態變量的Arduino庫
可以使用相同的語法的非靜態成員引用靜態成員。您也可以選擇使用class_name :: static_var語法。 – Ferruccio
@Ferruccio - 謝謝,已編輯。 – justkt
緩慢地說,一個靜態成員函數可以在非靜態成員函數的相同規則下修改一個非靜態數據成員,*如果*它可以指定要修改的類的一個實例:'some_instance.some_member = some_value'。只是一個靜態成員函數沒有'this',而且與非靜態成員函數不同,只是命名'some_member'並不意味着'this-> some_member'。所以靜態成員函數需要從某個地方獲得一個實例 - 一個非靜態成員函數有一個方便,並且具有指定它的成員的簡寫方式。 –