博文

怎样在 C++ 中计算对象的实例化次数(2005-11-16 13:38:00)

摘要:                      Objects Counting in C++   在 C++ 中,对某个 class 所产生出来的 objects保持正确的计数,是办得到的,除非你面对一些疯狂份子。 译文保留原作时态,并未修改。以下是译文所采用的几个特别请读者注意的术语: client :客端。 type:型别。为避免和其他近似术语混淆,本文译为「型别」而非「类型」。 instantiated:具现化。「针对一个 template,具体实现出一份实体」的意思。 instance:实体。「案例」是绝对错误的译法。 parameter:叁数。或称型式叁数,形叁。 argument:引数。或称实质叁数,实叁。 至於 class, object, data member, member function, constructor, destructor, template 等术语,皆保留不译。 有时候,容易的事情虽然容易,但它们还是隐藏着某种微妙。举个例子,假设你有个 class名为 Widget,你希望有某种办法找出程式执行期间究竟存在着多少个 Widget objects。方法之一(不但容易实作而且答案正确)就是为 Widget 准备一个 static 计数器,每当Widget constructor 被呼叫,就将该计数器加一,每当Widget destructor 被呼叫,就将该计数器减一。此外你还需要一个 static 成员函式 howMany( ),用来回报目前存在多少个 Widget objects。如果 Widget 什麽都没做,单单只是追踪其objects个数,那麽它看起来大约像这样: class Widget { public:     Widget() { ++count; }     Widget(const Widget&) { ++count; }     ~Widget()......

阅读全文(6849) | 评论:2