C++ C++;-在成员函数中初始化成员变量?

C++ C++;-在成员函数中初始化成员变量?,c++,C++,这看起来像是糟糕的编码实践,但这是给我的指导方针。我想在开场白中说,我不知道这实际上是如何实现的,我只是在写这个课程 class Example { private: static int total; public: void initalizeTotal(); } Example::initalizeTotal() { total = 0; } total(我猜)将用于计算该类对象的数量。 这基本上就是我想说的。问题是我如何找出如何实际调用该函数。 我不能

这看起来像是糟糕的编码实践,但这是给我的指导方针。我想在开场白中说,我不知道这实际上是如何实现的,我只是在写这个课程

class Example
{
  private:
     static int total;
  public:
    void initalizeTotal();
}

Example::initalizeTotal()
{
   total = 0;
}
total(我猜)将用于计算该类对象的数量。 这基本上就是我想说的。问题是我如何找出如何实际调用该函数。 我不能在构造函数中调用它,因为每次都会重置total。 我尝试过“检查”变量是否有值,如果没有,则调用函数

有人能给你什么建议吗

编辑:
我忘了包括总数是静态的。我必须有一个初始化total的函数。这是作业的一项要求。

您可以将
总计
变量设置为静态:

class Example
{
  private:
     void addObject();
  public:
     static int total;
     Example();
}

Example::Example()
{
   addObject();
}

void Example::addObject()
{
   total++;
}
这样它就不会属于任何特定的对象。如果然后在构造函数中调用的
addObject()
方法中增加它的值,则会得到objects count

要访问它,您将不会使用任何
示例
对象,而是可以这样使用它:

std::cout << "Objects count:" << Example::total;

您可以将
total
变量设置为静态:

class Example
{
  private:
     void addObject();
  public:
     static int total;
     Example();
}

Example::Example()
{
   addObject();
}

void Example::addObject()
{
   total++;
}
这样它就不会属于任何特定的对象。如果然后在构造函数中调用的
addObject()
方法中增加它的值,则会得到objects count

要访问它,您将不会使用任何
示例
对象,而是可以这样使用它:

std::cout << "Objects count:" << Example::total;

由于每个对象的
total
应为相同的变量,因此应将其设置为
静态

class Example {
    private:
        static int total;
}
要初始化静态变量,可以将此行放在.cpp文件中:

int Example::total = 0;

您不需要调用任何函数来执行此初始化。

因为每个对象的
总计
应该是相同的变量,所以应该将其设置为
静态

class Example {
    private:
        static int total;
}
要初始化静态变量,可以将此行放在.cpp文件中:

int Example::total = 0;

您不需要调用任何函数来执行此初始化。

您必须使用
'total'
字段作为
静态
变量,以便与所有创建的
类型的对象共享。任何时候实例化一个新对象都会增加
total
字段。
希望获得此帮助

您必须使用
'total'
字段作为
静态
变量,以便与所有创建的
示例
类型的对象共享。任何时候实例化一个新对象都会增加
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
}
#包括
课例{
静态整数合计;
公众:
示例(){total++;}
静态int getTotal(){return total;}
};
int-Example::total=0;
int main(){
示例a、b、c、d;
std::cout尝试以下操作:

#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
}
#包括
课例{
静态整数合计;
公众:
示例(){total++;}
静态int getTotal(){return total;}
};
int-Example::total=0;
int main(){
示例a、b、c、d;

std::cout Hope this help:Hope this help:名称也应该更改,它没有初始化任何内容。在
initializeTotal()的定义中缺少返回类型
现在。因为它不涉及任何实例的状态,所以它也应该是
静态的
。你最好也将它设置为私有的,否则每个人和任何人都会弄乱似乎是内部状态的东西。而且,我意识到这超出了问题的范围,如果这些对象是同时创建的,这将被打破由多个线程执行。名称也应该更改,它没有初始化任何内容。在
initializeTotal()的定义中缺少返回类型
现在。因为它不涉及任何实例的状态,所以它也应该是
静态的
。你最好也将它设置为私有的,否则每个人和任何人都会弄乱似乎是内部状态的东西。而且,我意识到这超出了问题的范围,如果这些对象是同时创建的,这将被打破为什么
getTotal()
不是
static
?这应该是因为它不访问非静态状态,也不需要这样的访问,这与非变异成员应该是
const
的原因是一样的。但是,就像在非const实例上调用
const
成员一样。为什么
getTotal()
不是
静态的
?这应该是因为它不访问非静态状态,也不需要这样的访问,这与非变异成员应该是
const
的原因相同。但是,您可以这样做,就像在非const实例上调用
const
成员一样。我知道这一点。这通常是我初始化变量的方式。但是我必须使用函数的赋值。我知道-它必须是成员函数吗?允许将函数声明为静态函数吗?我知道。这通常是我初始化变量的方式。但是,这是我必须使用函数的赋值。我知道-它必须是成员函数吗?允许将函数声明为sta吗抽搐?