析构函数(destructor)是一种特殊的成员函数。
- 类的析构函数名是在类名前加一个波浪好
~
- 累的析构函数是在删除对象的时候被隐式调用
- 析构函数没有形参页不反悔任何值
- 析构函数必须是
public
类型的
CreateAndDestructor::CreateAndDestructor(int ID, string msg){
objectID = ID;
message = msg;
cout << "Object " << objectID << " 构造函数 runs " <<message << endl;
}
void create(void){
cout << "createFunc " << endl;
CreateAndDestructor fifth(5, "(local automatic in create)");
static CreateAndDestructor sixth(6, "(local automatic in create)");
CreateAndDestructor seventh(7, "(local automatic in create)");
}
CreateAndDestructor::~CreateAndDestructor(){
cout<<(objectID ==1 || objectID == 6 ? "\n" : "");
cout << "Object " << objectID << " 析构函数 runs " <<message << endl;
}
void testCreateAndDestructor(){
cout << "testFunc " << endl;
CreateAndDestructor second(2, "(local automatic in testFunc)");
static CreateAndDestructor third(3, "(local automatic in testFunc)");
create();
cout << "testFunc : " << endl;
CreateAndDestructor forth(4, "(local automatic in testFunc)");
cout << "\ntestFunc end \n" << endl;
}
testFunc
Object 2 构造函数 runs (local automatic in testFunc)
Object 3 构造函数 runs (local automatic in testFunc)
createFunc
Object 5 构造函数 runs (local automatic in create)
Object 6 构造函数 runs (local automatic in create)
Object 7 构造函数 runs (local automatic in create)
Object 7 析构函数 runs (local automatic in create)
Object 5 析构函数 runs (local automatic in create)
testFunc :
Object 4 构造函数 runs (local automatic in testFunc)
testFunc end
Object 4 析构函数 runs (local automatic in testFunc)
Object 2 析构函数 runs (local automatic in testFunc)
Object 6 析构函数 runs (local automatic in create)
Object 3 析构函数 runs (local automatic in testFunc)
Program ended with exit code: 0
- 在全局作用域内定义的对象的构造函数在该文件中的任何其他函数(包括
main
函数)开始执行之前执行。 - 在
main
函数终止时,调用响应的析构函数。exit
函数强制程序立即终止并且不执行自动对象的析构函数。 - 自动局部对象的
析构函数
在执行到达定义该对象的程序点是调用,对应的析构函数
是在该对象离开该对像所在的作用域时调用。 -
static
局部对象的析构函数
只在执行第一次到达定义对象的程序点时调用一次,对应的析构函数
是在main
函数终止时或者exit
函数时调用。
网友评论