所以我有這些基類和子類。對象未刪除C++?
#include <iostream>
class BaseDevice
{
public:
int _pin;
BaseDevice() { std::cout << "base constructor\n"; }
virtual void read() = 0;
virtual ~BaseDevice() { printf("destroyed base\n"); }
void debugThis() { printf("debug %i \n", _pin); }
};
class Morse : public BaseDevice
{
public:
Morse(int pin) : BaseDevice() { _pin = pin; }
~Morse() { printf("destroyed morse\n");}
void read() { std::cout << "read"; }
private:
};
int main()
{
BaseDevice *morse[5];
morse[0] = new Morse(13);
morse[0]->debugThis();
morse[1] = new Morse(6);
morse[1]->debugThis();
delete morse[1];
morse[1]->debugThis();
return 0
}
所以,當我刪除莫爾斯[1],它說,它摧毀了「莫氏」 &「baseDevice」 ......但是,當我叫莫爾斯[1] - > debugThis()後立即刪除,它仍然打印出來_pin = 6,所以對象指針仍然存在。它沒有被刪除/銷燬?
你爲什麼混合'std :: cout'和'printf'? – crashmstr