c析构函数怎么写( 三 )


微软利用面向对象的概念在设计C#语言时充分考虑了这个问题并很好地予以解决:把对象的初始化工作放在构造函数中 , 把清除工作放在析构函数中 。当对象被创建时 , 构造函数被自动执行 。
当对象消亡时 , 析构函数被自动执行 。这样就不用担心忘记对象的初始化和清除工作 。
二.构造函数在C#中的运用 构造函数的名字不能随便起 , 必须让编译器认得出才可以被自动执行 。它的命名方法既简单又合理:让构造函数与类同名 。
除了名字外 , 构造函数的另一个特别之处是没有返回值类型 , 这与返回值类型为void的函数不同 。如果它有返回值类型 , 那么编译器将不知所措 。
在你可以访问一个类的方法、属性或任何其它东西之前 ,  第一条执行的语句是包含有相应类的构造函数 。甚至你自己不写一个构造函数 , 也会有一个缺省构造函数提供给你 。
class TestClass{ public TestClass(): base() {} // 由CLR提供} 下面列举了几种类型的构造函数 1)缺省构造函数class TestClass{ public TestClass(): base() {} } 上面已介绍 , 它由系统(CLR)提供 。更多内容请参照以下网页一共有三页 。
7. c++中析构函数可以实现什么【c析构函数怎么写】 析构函数名也应与类名相同 , 只是在函数名前面加一个波浪符~ , 例如~stud( ) , 以区别于构造函数 。它不能带任何参数 , 也没有返回值(包括void类型) 。只能有一个析构函数 , 不能重载 。如果用户没有编写析构函数 , 编译系统会自动生成一个缺省的析构函数 , 它也不进行任何操作 。所以许多简单的类中没有用显式的析构函数 。
C++当中的析构函数格式如下:
class <;类名>
{
public:
~<;类名>();
};
<;类名>::~<;类名>()
{
//函数体
}
如以下定义是合法的:
class T
{
public:
~T()
};
T::~T()
{
//函数体
}
当程序中没有析构函数时 , 系统会自动生成一下析构函数:
<;类名>::~<;类名>;(){} , 即不执行任何操作 。
下面通过一个例子来说明一下析构函数的作用:
#include<iostream>
using namespace std;
class T
{
public:
~T(){cout<<;"析构函数被调用 。";} //为了简洁 , 函数体可以直接写在定义的后面 。
};
int main()
{
T *t=new T;//建立一个T类的指针对象t
delete t;
cin.get();
}
最后输出:
析构函数被调用 。
参考资料:

c析构函数怎么写

文章插图