#include <vector>
#include <iostream>
#include <string>
using namespace std;
class human
{
protected:
string _name;
public:
human()
{
};
cout << "parent" << endl;
};
string getName() {return _name;};
void setName(string aName) {_name = aName;};
};
class man : public human
{
public:
man() : human() {};
~man()
{
cout << "child" << endl;
};
};
int main()
{
man* man1 = new man();
human* man2 = new man();
cout << "delete man1"<< endl;
delete man1;
cout << "delete man2"<< endl;
delete man2;
return 1;
#include <iostream>
#include <string>
using namespace std;
class human
{
protected:
string _name;
public:
human()
{
};
~human()
//~human() (×)
cout << "parent" << endl;
};
string getName() {return _name;};
void setName(string aName) {_name = aName;};
};
class man : public human
{
public:
man() : human() {};
~man()
{
cout << "child" << endl;
};
};
int main()
{
man* man1 = new man();
human* man2 = new man();
cout << "delete man1"<< endl;
delete man1;
cout << "delete man2"<< endl;
delete man2;
return 1;
}
输出结果:
delete man1
child
parent
delete man2
parent
以new分配的内存需要用delete 显式释放,但是注意 man2 的析构结果,
它没有调用基类析构函数,这是因为基类析构函数不是虚函数。在实现多态
的时候,如果调用基类的析构函数,则需将基类析构函数声明为虚函数如上述
代码的(×)处。