-1

在运行时,需要跟踪类的实例数。从面向对象的角度来看,您使用以下哪一种约定来实现这一点?

选择

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

选择1是我的选择

我对吗?

不是作业。

我是一名 JAVA 程序员。但我必须回答 C++ 问题。

4

2 回答 2

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() {}
}
于 2012-09-03T17:28:02.310 回答
0

这可以通过static成员来实现因为只为类维护一个副本,并且您可以在构造函数中增加相同的副本以跟踪创建的实例数,而不是当前可用的实例数

于 2012-09-03T17:18:19.717 回答