在C++语言里面,申明了一个对象,当代码走出了对象的作用域的时候,这个对象的析构函数会被调用,因而给用户提供了自主释放资源的机会,无论这个资源是位于内存还是显存,都没有关系。
譬如下面的代码,String a1的资源释放过程是:先调用析构函数String::~String,然后释放a1 对象本身(譬如size,vtable等)。
#include <iostream>
#include <cstring>
using namespace std;
class String
{
private:
char *s;
int size;
public:
String(const char *); // constructor
~String(); // destructor
};
String::String(const char *c)
{
size = strlen(c);
s = new char[size+1];
strcpy(s,c);
}
String::~String()
{
cout << "~String" << endl;
delete []s;
}
void testString() {
String a1("Hello");
}
int main()
{
cout<<__FUNCTION__<<","<<__LINE__<<endl;
testString();
cout<<__FUNCTION__<<","<<__LINE__<<endl;
return 1;
}