我有以下类包含 3 种数据类型:
class CentralBank{
MaxHeap richestBanks;
HashTable banks;
AccountTree accounts;
public:
CentralBank(int numAccounts, Account* accounts, int numBanks, Bank* bankArr);
void AddAccount(Account account);
void RemoveAccount(int accountID);
void AddBank(Bank bank);
int GetAccountsNumber(int bankID);
void GetKRichestBanks(unsigned int K, Bank* banks);
int GetSumBalance (int low, int high);
};
这是构造函数:
CentralBank::CentralBank(int numAccounts, Account* accounts, int numBanks,
Bank* bankArr): accounts(numAccounts,accounts){
int** locs = new int*[numBanks];
richestBanks = MaxHeap(numBanks,bankArr, locs);
banks = HashTable(numBanks,bankArr,locs);
delete[] locs;
}
我的问题是堆和哈希表的析构函数是在它们的构造函数之后调用的。如果我把它们都变成指针,它就不会发生。为什么会这样?有没有办法让它们不是指针,也没有在初始化后立即调用析构函数?我没有正确初始化它们吗?
PS:它们不在初始化列表中,因为它们的构造函数需要需要初始化的“locs”参数。