设一个静态变量,这样可以方便的表示出每一个对象。这种方法是我测试时常用的。测试结果是test1和test2的构造函数执行了,但testers数组没有动静。随便找一个testers[1],结果还是null。刚才找来一本《Java编程思想》里有解释,说的是定义数组时只是声明了那么多的引用,并没有去生成对象。
但C++里就不同了:
输出结果:
Object: 1 was born.Object: 2 was born.Object: 3 was born.Object: 3 is dead.Object: 2 is dead.Object: 1 is dead.
写这个C++片段时发生了一点波折。一开始我把那个静态变量在class里初始化了,结果编译器gcc给我来了个“error: ISO C++ forbids in-class initialization of non-const static member `next_id'”。瞎改了几下,没碰对,索性打开电脑上的《C++ Primer》,才想起来静态成员是在class外面初始化的,而且还要指明类型:int A::next_id=1;
语言之间的细小差别的确挺让人郁闷。
发表于 @ 2007年08月10日 17:07:00|评论(loading...)|编辑|收藏