【发布时间】:2016-01-31 03:45:47
【问题描述】:
我正在做这个单元测试。我想把电钻和电池都删了,但是好像不行(电池可能不能删)。我可以对析构函数做任何事情来处理这个问题吗?
void test_rover::testDisconnectBattery() {
Drill* drill = new Drill();
drill->connectBattery(new Battery(10));
drill->disconnectBattery();
//CPPUNIT_ASSERT(drill->Connected()==false);
delete drill;
CPPUNIT_ASSERT(Object::getCount()==0);
}
Device.cpp(Device是drill的基础)
Device::Device() {
}
Device::Device(const Device& copy) {
}
Device::~Device() {
delete _battery;
}
void Device::connectBattery(Battery *b){
_battery = b;
}
void Device::disconnectBattery(){
_battery = NULL;
}
电池.cpp
Battery::Battery(int power) {
_power = power;
}
Battery::Battery(const Battery& copy) {
}
Battery::~Battery() {
}
int Battery::Power(){
return _power;
}
【问题讨论】:
-
调用析构函数(
~Device)时,_battery为NULL,断开或外接电池时需要delete电池 -
您使用的是 C++,为什么不使用适合的 std::shared_ptr 或 std::unique_ptr?
-
我刚刚添加了一个“删除_电池;”在disconnectBattery()中,但它仍然不起作用..
-
另外 - 你为什么首先使用 ANY 指针?为什么不让 Battery 成为 Drill 的成员?而且,你永远不会在 Drill 的构造函数中初始化
_battery... -
如果我调用
connectBattery并在堆栈上分配了击球手怎么办?
标签: c++ unit-testing destructor delete-operator