<分区>
我有两个类,一个Employee
类和一个BankAccount
类,employee类将BankAccount
类作为私有(private)变量指针。
这就是我想要做的:
- 我需要为每个
Employee
中的所有BankAccount
设置值 - 然后我在函数末尾删除每个
Employee
的所有BankAccounts
。
我在 Employee
中使用成员函数 setter 来设置 BankAccount
指针。 BankAccount
有一个私有(private)变量,那就是金额。稍后,我在应该指向每个 BankAccount 的
内存地址的指针上调用 delete。在我调用 print 查看每个 Employee
的银行值后,它仍在打印每个 BankAccount
如果我调用 delete,堆上的内存是否应该被删除,并且当调用 print 时不为 BankAccount
输出任何内容?
代码如下:
vector<Employee*> employees;
//get employee full name & salary and return
employees.push_back(get_employee_info());
//setup their bank account
setup_bank(employees);
//make temp pointer to store bank memory address
BankAccount * tempBankPtr;
for (int i =0; i < employees.size(); i++) {
tempBankPtr =employees[i]->get_bank();
delete tempBankPtr // delete the heap object that pointer is pointing at
}
//print values
for (int i =0; i< employees.size(); i++) {
employees[i]->print();
}
打印代码
void Employee:: print() const {
cout << "First name is: " << firstName << "\n";
cout << "Last name is: " << lastName << "\n";
BankAccount* bankholder = NULL;
bankholder = get_bank();
if(bankholder != NULL)
cout << "Account Balance is: " << get_bank()->get_amount() << "\n"; //prints values
}
银行 setter/getter
BankAccount* Employee::get_bank() const{
return bank;
}
这在 setup_bank 中调用
void Employee::set_bank(Employee* e, double amount){
bank = new BankAccount(amount);
}