鱼C论坛

 找回密码
 立即注册
查看: 3524|回复: 1

使用动态内存后为什么析构函数没输出

[复制链接]
发表于 2013-6-21 17:34:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<iostream>
class Person
{
public:
virtual void input()
{}
protected:
int number;
char* name;
};
class Student:public Person
{
public:

Student(int number,char *name,char* classes,int score)
{

this->number=number;
this->name=name;
this->classes=classes;
this->score=score;
}
virtual void input()
{
std::cout<<"请输入学生信息:"<<std::endl;
std::cout<<"学生编号:"<<number<<"\n";
std::cout<<"学生姓名:"<<name<<"\n";
std::cout<<"学生班级:"<<classes<<"\n";
std::cout<<"学生成绩:"<<score<<"\n";
}
~Student()
{
std::cout<<"学生信息输入结束!"<<std::endl;
}
private:
char *classes;
int score;

};
class Teather:public Person
{
public:

Teather(int number,char *name,char *titel,int department)
{
this->name=name;
this->number=number;
this->titel=titel;
this->department=department;
}
virtual void input()
{
std::cout<<"请输入教师信息:"<<std::endl;
std::cout<<"教师编号:"<<number<<"\n";
std::cout<<"教师姓名:"<<name<<"\n";
std::cout<<"教师职称:"<<titel<<"\n";
std::cout<<"教师部门:"<<department<<"\n";
}
~Teather()
{
std::cout<<"教师信息输入结束!"<<std::endl;
}
private:
char* titel;
int department;

};
int main()
{
Person *pi;


pi=new Student(1200380214,"lan","三院八专业(2)班",90);
pi->input();
std::cout<<std::endl;
delete pi;
pi=NULL;
pi=new Teather(407,"laoshi","计算机实验老师",3);
pi->input();
delete pi;
pi=NULL;


return 0;
}使用动态内存后为什么没有输出析构函数
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-22 01:35:53 | 显示全部楼层
小试了一下,貌似跟pi的类型有关,
是Person *类型,delete时,如果Person有析构函数,就会被调用;
若是Student * 类型,delete时就调用Student的析构函数。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-22 17:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表