【问题标题】:Since static member functions can't modify non-static member variables, why should we still use it? [duplicate]既然静态成员函数不能修改非静态成员变量,那为什么还要使用呢? [复制]
【发布时间】:2013-11-15 05:34:44
【问题描述】:

我知道静态类成员函数不需要实例化。但是,既然类成员函数的操作总是基于它自己的成员变量,为什么还要使用静态成员函数呢?有人可以通过一些详细的例子告诉我吗?提前致谢。

附:我正在编写一个程序,在一个类成员函数中创建两个线程,因此我需要在创建两个线程时将线程回调函数地址传递给。我希望线程回调函数也是同一个类的成员函数。根据一些参考资料,如果回调函数是类的成员,它应该是静态的。问题来了:在静态回调中,我不能调用同一个类中的其他非静态函数,也不能修改它的非静态成员变量。 (英语是我的第二语言,所以我不太擅长。希望有人能帮助我更简洁地描述它:-)

【问题讨论】:

  • 您的问题不清楚。有些成员函数的动作不是基于成员变量的值;此类函数可以是static

标签: c++ multithreading


【解决方案1】:

我只是给你一个例子。如果你想计算你为你的类声明了多少个实例,你可能有一个像

这样的静态成员
int instance_count;

在类构造函数中,您可以添加 instance_count,如下所示:

instance_count++;

在你的析构函数中:

instance_count--;

因此,您可以获得当前程序中有多少实例。

【讨论】:

  • 这是一个使用静态变量的例子;但问题是关于静态函数的。
  • 很抱歉。谢谢你提醒我这一点。
猜你喜欢
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 2017-10-11
  • 2012-10-20
  • 2011-05-31
  • 1970-01-01
相关资源
最近更新 更多