【发布时间】:2015-02-07 07:19:40
【问题描述】:
我不确定这是否是一种好的编码习惯,所以如果我错了,请纠正我。
我需要一种动态创建 Transaction 类并将对象添加到 Transaction 对象向量的方法。这就是我所做的:
class Transaction {
int data;
Transaction(int d) : data(d) {}
};
class Container {
std::vector<Transaction> transactions;
void createTransaction();
};
void Container::createTransaction() {
int data;
std::cout << "Enter your data: ";
std::cin >> data;
Transaction t = new Transaction(data);
// In order to keep the object from destruction at end of function.
// Possibly could be done with static as well.
transactions.push_back(*t);
}
向量是对象的向量,而不是指针。这是我不需要删除动态内存的情况吗,因为它会在程序/范围结束时自行删除?
这是动态创建对象和存储对象的糟糕方式吗?
【问题讨论】:
-
这种实现的内存泄漏可能是不可取的。我看不出动态分配
t根本的理由。在您输入之后执行transactions.emplace_back(data);,然后将其余的扔掉。
标签: c++ vector dynamic-memory-allocation delete-operator