C++ - Initializing a Member variable inside a member function?
这似乎是糟糕的编码实践,但这是给我的指导方针。我想先说一句,我不知道这将如何实际实现,我只是在编写这个类。
1 2 3 4 5 6 7 8 9 10 11 12 | class Example { private: static int total; public: void initalizeTotal(); } Example::initalizeTotal() { total = 0; } |
total(我猜)将用于计算该类的对象数。这基本上就是我想要的。问题是我如何弄清楚如何实际调用函数。我不能用构造函数来调用它,因为每次都会重置总计。我尝试过,但是失败了,如果变量有一个值,如果没有,调用函数。
有人能给你什么建议吗?
编辑:我忘了把总数包括在内是静态的。我必须有一个函数来初始化total。这是任务的要求。
由于每个对象的
1 2 3 4 | class Example { private: static int total; } |
要初始化静态变量,可以将此行放入.cpp文件中:
1 | int Example::total = 0; |
您不需要调用任何函数来进行初始化。
您必须使用
您可以使
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class Example { private: void addObject(); public: static int total; Example(); } Example::Example() { addObject(); } void Example::addObject() { total++; } |
这样它就不会属于任何特定的对象。然后,如果在将在构造函数中调用的
要访问它,您将不会使用任何
1 | std::cout <<"Objects count:" << Example::total; |
如果您想初始化它,您可以在代码中的某个地方用同样的方法进行初始化:
1 | Example::total = 0; |
请尝试以下操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <iostream> class Example { static int total; public: Example() { total++; } static int getTotal() { return total; } }; int Example::total = 0; int main() { Example a, b, c, d; std::cout << Example::getTotal(); // 4 } |