可能重复:
In c++ what does a tilde “~” before a function name signify?
〜和另一条线的区别是什么?
public:
myClass() {};
~myClass() {};
答案 0 :(得分:7)
myClass(){}
被称为构造函数,~myClass(){}
被称为析构函数!
在创建对象时调用构造函数,并在销毁对象时调用析构函数。
myClass *pObj = new myClass(); //constructor is invoked;
//work with pObj;
delete pObj; //destructor is invoked;
这是使用new
和delete
时的示例。 new
导致调用构造函数,delete
导致析构函数被调用。
让我们看另一个例子:
{
myClass Obj; //constructor is automatically invoked;
//work with Obj;
} //<--here Obj goes out of scope which causes destructor to be automatically invoked;
使用自动对象,会自动调用构造函数,当对象超出范围时,会自动调用析构函数。
答案 1 :(得分:0)
函数“myClass”是一个构造函数,在创建该类型的对象时调用。类可以提供多个不同的构造函数,可用于创建(即构造)该类型的对象。
函数“~myClass”是析构函数,在销毁该类型的对象时调用(当自动存储分配的实例超出范围或指向动态分配的该类型实例的指针时发生已使用delete
运算符删除。虽然类可以提供多个构造函数,但类只能提供单个析构函数。
当一个类有虚方法时,析构函数也应该标记为虚拟。