网站建设数据库是什么意思,郑州app外包公司,黄山地区建设行业网站,抖音做我女朋友网站析构函数的简述
1. 析构函数和构造函数类似#xff0c;是c规定当对象的生命周期结束时#xff0c;默认你会调用析构函数。 2. 同理#xff0c;当我们不写析构函数的时候#xff0c;编译器会自动生成一个空实现的析构函数。 3. 析构函数只能编译器自己调用#xff0c;我们…析构函数的简述
1. 析构函数和构造函数类似是c规定当对象的生命周期结束时默认你会调用析构函数。 2. 同理当我们不写析构函数的时候编译器会自动生成一个空实现的析构函数。 3. 析构函数只能编译器自己调用我们不能调用。(无论是不是自己写的) 析构函数的作用
我们在析构函数中主要是在对象的生命周期结束时释放一些内存(例如堆区的内存)。 当然如果没有内存需要释放那就可以写一个空实现的或者不需要写(编译器会加一个)。 析构函数语法
class Human {
public:Human();~Human();
private:int age;char* name;
};Human::Human() {age 18;name new char;
}Human::~Human() {delete name;
}
注意: 1. 析构函数不能有参数也就说明析构函数只能有一个不能进行函数重载 2. 析构函数是在默认构造函数前面加一个~ 3. 代码中类内有两个成员变量 -- age 和 nameage是局部变量其生命周期由编译器管理而name是一个指针我们为它在堆区开辟了内存所以需要在对象生命周期结束的时候释放掉。(这就在析构函数中实现了) 4. 对于上面的代码如果只有age吗那析构函数就可以写成一个空实现 析构函数调用时机
class Human {
public:Human();~Human();
private:int age;char* name;
};Human::Human() {age 18;name new char;cout __FUNCTION__ endl;
}Human::~Human() {delete name;cout __FUNCTION__ endl;
}void test() {Human man;
}int main(void) {test();system(pause);return 0;
} 1. 在创建对象的时候会调用构造函数对象声明周期结束调用析构函数-- 使用代码来验证。 2. __FUNCTION__是一个宏使用在函数中表示此函数的名字。 3. 对象也是变量,代码中man对象的生命周期为定义--test函数结束。
结果: 可以看出先调用构造创建,再调用析构结束