[英]Can Non-static function modify a static variable in c++
can非静态函数可以在c ++中修改静态变量
是的,只要数据成员的可见性允许,非静态成员函数就可以修改静态数据成员。
是的,请参阅此示例以获取一个小型示例程序。
相反,静态函数不能像常规成员函数那样修改常规成员变量。
是的你可以。
将“静态成员”视为表征类的属性,而“非实例成员”表征实例。
类定义了一个概念,而实例是这个概念的出现。 一个愚蠢的例子是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; }
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.