您的位置:程序门 -> c/c++ -> c++ 语言



派生类如何写析构函数 ,高手解答下。急!!!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


派生类如何写析构函数 ,高手解答下。急!!![已结贴,结贴人:last_dancer]
发表于:2007-06-07 20:38:49 楼主
class   student
{
public:
void   getvalue();
void   display();
student(int,string,char);
student();
~student();//基类的析构函数
private:
int   num;
string   name;
char   sex;
};
………………
………………
………………
class   student1:public   student
{
public:
void   display1();
void   getvalue1();
student1();
        student1(int,string,char,int,string);
      ~student1();//派生类的析构函数
private:
int   age;
string   addr;
};
……………………
……………………
着个程序在编译的时候能通过,但是链接的时候就不行了。
然后我如果将他们两个析构函数注释掉就一点问题也没有了。
是不是我写错析构函数了?小弟不才   ,刚学析构函数,还有还多不明白
还请高手仔细解答下!
谢谢
发表于:2007-06-07 20:42:491楼 得分:0
不用写。
发表于:2007-06-07 20:43:092楼 得分:0
两个都不用写。
发表于:2007-06-07 20:44:023楼 得分:0
-   -!
我想写个!
麻烦楼下的给个正解!
发表于:2007-06-07 20:45:224楼 得分:0
基类虚构函数virtual
发表于:2007-06-07 20:53:545楼 得分:0
没有回答问题啊-   -!
发表于:2007-06-07 21:11:146楼 得分:0
昏迷   没有人能解答吗???
发表于:2007-06-07 21:13:327楼 得分:20
把你的代码复制,在函数后加上{},编译运行,都没问题。可能与环境有关。

类的析构函数应该声明为   virtual:
当使用多态时,如果不把析构函数声明为virtual,即在使用delete时,只能执行基类的析构函数,而并不会执行子类的析构函数。
解决这个问题的办法就是把基类的析构函数声明为virtual,使得类的析构函数得以按正确顺序执行。
退一步说,当类中有虚函数时,就应该把析构函数声明为virtual。
发表于:2007-06-07 21:13:448楼 得分:0
链接错误?你实现了吗?
发表于:2007-06-07 21:23:529楼 得分:0
回复:inhibitory()
俺又学到新东西了:)
按照你说的方法问题意见解决!谢谢!!!

不过为什么要加   {}呢  

在自由基类的时候为什么不用加就可以,而有了派生类就要加,有点迷糊……
发表于:2007-06-07 21:33:5410楼 得分:0
{}是函数的实现,当然要加。既然你能分清编译错误和链接错误,应该知道这一点才对。
发表于:2007-06-07 21:53:0911楼 得分:0

我只是比较纳闷   那本破书上都没加-   -!


快速检索

最新资讯
热门点击