繁体   English   中英

(C++) 如何跟踪我声明的 class 的对象数量?

[英](C++) How can I keep track of how many objects of a class I declare?

假设我有一个像这样的 class,我想跟踪有多少员工以及他们使用帐号系统的人。 我想知道这是否是一个愚蠢的想法,或者这是否很好,只是(到目前为止)没有正确实施。

class Employee {
private:
  long int accountNumber;
  static int currentTotal;
  static int lifetimeTotal;
  /* other member variables like name */
public:
  /* member functions, constructors, etc. */
};

我的想法是:

员工加入公司

我可以声明一个员工,并拥有++currentTotal; ++lifetimeTotal; ++currentTotal; ++lifetimeTotal; 在构造函数中。 这会将员工人数增加一。

员工离开公司

当有人不再在公司工作时,我可以以某种方式使用--currentTotal; . 当前员工人数已减少 1,因此变量也应减少; 但是, lifetimeTotal不会减少。

我将如何减少这个? 我应该使用某种虚拟员工并为此编写成员 function 吗? 或者也许对我声明的所有对象使用指针,以便我可以delete它们?

员工帐号

我在想帐号可以半随机生成,其中部分数字序列编码某种功能信息(他们在哪个部门工作,他们是否收到工资或薪水等),另一部分由 RNG 确定,最后一位是校验位。 但是,我想有办法确保不能重复使用帐号。 我不知道如何实现这一点。

注意动向

我如何准确地跟踪它们以及 go? 我的第一个想法是向量或某种 ADT(我还不完全了解如何实现,但我明白了基本想法)。 但是,如果我需要找到 John Doe 的薪水,我需要能够在潜在的数千名其他员工的账户中搜索它(在我的模拟练习中,我将只有几十个)。

我真的不太了解基础知识之外的类/结构,因为到目前为止,我使用它们的经验只有 inheritance、 virtual函数、 const_caststatic_castoperator重载、 friend元函数,以及我在网上找到的这个东西称为智能指针,而不是声明Employee worker1( /*... */ ); ,我可以声明ptr<Employee> worker1(new Employee( /*... */ )); . 我在示例中看到了很多我不知道该怎么做的东西。

我几乎可以肯定数组不是通往 go 的方式,因为它的大小是固定的,所以我认为向量更好。 我真的不知道自己在做什么,我将非常感谢任何帮助。

取决于您想要实现的目标:

一个。 跟踪当前实例化了特定 class (此处为employee )的对象的数量。 您将实现一个 static 成员计数器,该计数器在所有构造函数中递增,在析构函数中递减。

湾。 跟踪您的公司有多少员工(这与 (a) 完全不同,请考虑一下)。 在这里,计数器应该是您的数据 model 的一部分(您可能有一家公司class 会通过其hire()fire()方法来跟踪它)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM