It is very often that you might need to count the current number of instance of this class.
class
Widget {
public
:
Widget() { ++count; }
Widget(
const
Widget&) { ++count; }
~Widget() { --count; }
static
size_t
howMany()
{
return
count; }
private
:
static
size_t
count;
};
size_t
Widget::count = 0;
Intuitively, you need a static variable in the class. However, it is very important to remember that
static
size_t
count;
is only a declaration and there is no memory allocated and referred to this variable. That is, we need the last line, size_t
Widget::count = 0;
, so that the linker knows what memory location you're referring to when you use the name.ref:
http://www.drdobbs.com/cpp/counting-objects-in-c/184403484
http://stackoverflow.com/questions/7781188/static-variable-for-object-count-in-c-classes
No comments:
Post a Comment