派生类怎么写析构函数 ,高手解答下。

派生类如何写析构函数 ,高手解答下。急!!!
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;
};
……………………
……………………
着个程序在编译的时候能通过,但是链接的时候就不行了。
然后我如果将他们两个析构函数注释掉就一点问题也没有了。
是不是我写错析构函数了?小弟不才   ,刚学析构函数,还有还多不明白
还请高手仔细解答下!
谢谢


------解决方案--------------------
把你的代码复制,在函数后加上{},编译运行,都没问题。可能与环境有关。

类的析构函数应该声明为 virtual:
当使用多态时,如果不把析构函数声明为virtual,即在使用delete时,只能执行基类的析构函数,而并不会执行子类的析构函数。
解决这个问题的办法就是把基类的析构函数声明为virtual,使得类的析构函数得以按正确顺序执行。
退一步说,当类中有虚函数时,就应该把析构函数声明为virtual。