可以非静态函数修改静态变量在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'。所以静态成员函数需要从某个地方获得一个实例 - 一个非静态成员函数有一个方便,并且具有指定它的成员的简写方式。 –