在运行时,需要跟踪类的实例数

-1 c++ oop

在运行时,需要跟踪类的实例数.从面向对象的角度来看,您使用以下哪个约定来实现此目的?

选择

  1. 类级变量(静态成员变量)
  2. 全局变量
  3. 构造函数
  4. 局部变量
  5. 析构函数

选择1是我的选择

我对吗?

不做作业.

我是JAVA程序员.但我不得不回答C++问题.

Den*_*kiy 5

有点对.静态WeakHashMap和将自身置于地图中的构造函数可以完成这项工作.每次调用size()时,它都会检查哪些对象已被gc'ed.

更多oop(我想)的方法是使用静态工厂方法,如:

class Trackable {
    private static WeakHashMap<Trackable, Object> map = new WeakHashMap<>();
    private static final Object dummy = new Object();

    public static Trackable newInstance() {
        Trackable instance = new Trackable();
        map.put(instance, dummy);
        return instance;
    }

    public static int getTrackedObjectSize() {
        return map.size();
    }

    private Trackable() {}
}
Run Code Online (Sandbox Code Playgroud)