[英]C++ - Initializing a Member variable inside a member function?
这似乎是不好的编码习惯,但这是给我的指导原则。 我想以说我不知道如何在主体中实际实现这一点作为序言,我只是编写该类。
class Example
{
private:
static int total;
public:
void initalizeTotal();
}
Example::initalizeTotal()
{
total = 0;
}
total(我猜)将用于计算该类的对象数。 这基本上就是我要说的。 问题是我如何弄清楚如何实际调用该函数。 我不能只在构造函数中调用它,而是每次都会重置总数。 而且我已经尝试并失败了“检查”变量是否具有值,如果没有,请调用该函数。
有没有人可以给的建议?
编辑:我忘了包括总数是静态的。 而且我必须具有初始化total的功能。 多数民众赞成在分配的要求。
由于对每个对象来说total
应该是相同的变量,因此您应该将其设置为static
:
class Example {
private:
static int total;
}
要初始化静态变量,可以将此行放在.cpp文件中:
int Example::total = 0;
您无需调用任何函数即可进行此初始化。
您可以将total
变量设为静态:
class Example
{
private:
void addObject();
public:
static int total;
Example();
}
Example::Example()
{
addObject();
}
void Example::addObject()
{
total++;
}
这样它就不会属于任何特定对象。 如果然后在addObject()
方法中增加它的值, addObject()
方法将在构造函数中调用,则将获得对象计数。
要访问它,您将不会使用任何Example
对象,而是可以这样使用它:
std::cout << "Objects count:" << Example::total;
如果要初始化它,请在代码中的某处进行相同的操作:
Example::total = 0;
为了与Example
类型的所有已创建对象共享,必须使用'total'
字段作为static
变量。 任何时候实例化一个新对象都会增加total
字段。 希望这个帮助
请尝试以下操作:
#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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.