C++ 如何找到我的类创建的对象总数?

C++ 如何找到我的类创建的对象总数?,c++,class,C++,Class,例如,我有我班的员工。我想记录到目前为止有多少员工为我工作。我可以创建静态计数变量并在构造函数中添加1。但每当我们在参数中传递对象或返回类的对象时创建临时对象时,它也会为它们添加。静态类成员是正确的选择。有几件事需要注意: 确保重载所有构造函数。你不想支持的应该明确删除 别忘了在析构函数中递减 如果您的程序是多线程的,那么请使用原子单元或提供您自己的锁定机制 静态类成员是正确的选择。有几件事需要注意: 确保重载所有构造函数。你不想支持的应该明确删除 别忘了在析构函数中递减 如果您的程序是多线

例如,我有我班的员工。我想记录到目前为止有多少员工为我工作。我可以创建静态计数变量并在构造函数中添加1。但每当我们在参数中传递对象或返回类的对象时创建临时对象时,它也会为它们添加。

静态类成员是正确的选择。有几件事需要注意:

  • 确保重载所有构造函数。你不想支持的应该明确删除
  • 别忘了在析构函数中递减
  • 如果您的程序是多线程的,那么请使用
    原子单元
    或提供您自己的锁定机制

    • 静态类成员是正确的选择。有几件事需要注意:

      • 确保重载所有构造函数。你不想支持的应该明确删除
      • 别忘了在析构函数中递减
      • 如果您的程序是多线程的,那么请使用
        原子单元
        或提供您自己的锁定机制

      你应该很好。临时/副本将使用与您创建的默认构造函数不同的构造函数。因此它不会运行递增计数器的代码。您可以向构造函数添加bool参数,该参数决定计数器是否递增。(或者按照@Omada的建议使用不同的构造函数)只要析构函数递减计数器,复制构造函数递增计数器就没有问题。计数器应该指示活动对象的数量,而不是曾经创建过的对象的数量。你应该很好。临时/副本将使用与您创建的默认构造函数不同的构造函数。因此它不会运行递增计数器的代码。您可以向构造函数添加bool参数,该参数决定计数器是否递增。(或者按照@Omada的建议使用不同的构造函数)只要析构函数递减计数器,复制构造函数递增计数器就没有问题。计数器应该指示活动对象的数量,而不是曾经创建的对象的数量。这将只显示活动员工的数量。如果我想计算从开始到日期的员工数,即使他们不是活动员工。然后删除析构函数中的减量。是的,但有一个问题,它也会为临时副本添加。然后您需要确定什么是临时副本。您可以有一个适当的构造函数,它接受多个值并创建适当的对象。如果您随后假设临时对象是通过默认构造函数和复制构造函数创建的,那么您只需在适当的构造函数中增加默认构造函数和复制构造函数,就可以了。这只会给出活动雇员的计数。如果我想计算从开始到日期的员工数,即使他们不是活动员工。然后删除析构函数中的减量。是的,但有一个问题,它也会为临时副本添加。然后您需要确定什么是临时副本。您可以有一个适当的构造函数,它接受多个值并创建适当的对象。若您随后假设临时对象是通过默认构造函数和复制构造函数创建的,那个么您只是不在默认构造函数和复制构造函数中递增,而是在适当的构造函数中递增。