一、定义
1. 作用:对象消亡时,自动被调用,用来释放对象占用的空间
2.特点:
(1) 名字与类名相同
(2) 在前面需要加上"~"
(3) 无参数,无返回值
(4) 一个类最多只有一个析构函数
(5) 不显示定义析构函数会调用缺省析构函数
如下的M类,M的构造函数继承了CManagerFactory类和抽象类CManagerInterface的构造方法,
可以用一个抽象类定义一个指向该类的指针,但是不能定义或声明对象。所以CManagerInterface要使用指针来定义。
~M析构函数在M类的对象消亡时断开连接,释放,
WinsockCleanup=>Deinitializes the WinSocks library.释放以下的初始化。
WinsockStartup=>Initializes the WinSocks library.
class M
{
private:
CManagerFactory CF;
CManagerInterface* CI;
public:
M() :CF("C:\\mtmanapi.dll"), CI(NULL)
{
CF.WinsockStartup();
if (CF.IsValid()==FALSE||(CI=CF.Create(ManAPIVersion))==NULL)
{
printf("Failed to create MetaTrader 4 Manager API interface\n");
}
}
~M()
{
if (CI!=NULL)
{
if (CI->IsConnected())
{
CI->Disconnect();
CI->Release();
CI = NULL;
}
CF.WinsockCleanup();
}
}
bool IsValid()
{
return(CI != NULL);
}
CManagerInterface* operator->()
{
return(CI);
}
};