[英](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_cast
和static_cast
、 operator
重载、 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.