簡體   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