由显式调用析构函数引发的思考
想看干货的请直接到结尾~~~
前些日子使用Visual C++6.0 写程序,偶然发现在使用对象的成员时编译器提供的自动补全选项中,出现了如下情形(如右图):在自动补全选项中是有析构函数的(但是没有构造函数),这就让人产生疑问,是不是析构函数可以显式调用呢?经过测试后答案是肯定的,有代码如下:
#include <iostream>
using namespace std;
class Point
{
private:
int x,y;
public:
Point(int x=0,int y=0)
{
this->x=x;
this->y=y;
cout<<"Object ("<<x<<","<<y<<") created!\n";
}
~Point()
{
cout<<"Object ("<<x<<","<<y<<") destroyed!\n";
}
};
int main()
{
Point p1(1,1),p2(2,2);
p1.Point::~Point();
Point p3(3,3);
return 0;
}
程序是可以正常运行的,输出结果:
以上结果表明,即使显式调用了析构函数&#