繁体   English   中英

可以使用非静态函数在c ++中修改静态变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM