析构函数未被调用情况:
#include<iostream>
#include<cstdlib>
using namespace std;
class Student
{
public:
Student(int n,char nam[],char s)
{
num=n;
name=nam;
sex=s;
cout<<"constructing……"<<endl;
}
~Student()
{
cout<<"destructing……"<<endl;
}
void display()
{
cout<<"num:"<<num<<endl;
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;
}
private:
int num;
char *name;
char sex;
};
int main()
{
Student stu(1001,"某人",'m');
stu.display();
getchar();
return 0;
}
析构函数的使用(自动使用):
#include<iostream>
#include<cstdlib>
using namespace std;
class Student
{
public:
Student(int n,char s)
{
num=n;
sex=s;
cout<<"consructor called"<<"-"<<num<<endl;
}
~Student()//析构函数(调用对象结束后,自动执行析构函数)
{
cout<<"Destructor called"<<"-"<<num<<endl;
}
void display()
{
cout<<"num:"<<num<<endl;
cout<<"sex:"<<sex<<endl;
}
private:
int num;
char sex;
};
int main(){
Student stu1(10010,'f');
stu1.display();
Student stu2(10011,'m');
stu2.display();
//system("pause");
getchar();
return 0;
}
析构函数作为内联函数:
//析构函数也可以是内联函数
#include "iostream"
using namespace std;
class A
{
public:
void foo()
{
cout<<"A\n";
}
~A();
};
inline A::~A()
{cout<<"inline\n";}
int main(){
A*niu=new A();
niu->foo();
delete niu;
system("pause");
return 0;
}