[英](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.