欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 什么是析构函数和构造函数,它们的作用是什么?

什么是析构函数和构造函数,它们的作用是什么?

2025/4/27 18:07:42 来源:https://blog.csdn.net/2302_80908313/article/details/143492719  浏览:    关键词:什么是析构函数和构造函数,它们的作用是什么?

构造函数

作用

注意:编译器提供的默认 构造函数 和 析构函数 是空

主要作用于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无需手动调用。

格式

构造函数:类名(){}

特性

1.构造函数没有返回值也不写void,名字和类名相同 可以重载

2.当我们没有实现构造函数时编译器会自动提供默认的构造函数

3.当创建对象时编译器自动调用构造函数

#include<iostream>
using namespace std;
class A
{int n;int* p=NULL;
public:A(){cout << "无参构造" << endl;};A(int n) {cout << "有参构造" << endl;this->n = n;if (n > 0)p = new int[n];}~A(){if (p)delete[]p;else p = NULL;}
};int main() {A* a = new A;//调用无参构造delete a;A* a1 = new A();//调用无参构造delete a1;A* a2 = new A[3];//调用无参构造   delete[]a2;A* a3 = new A[3]{ A(1),A(2),A(3) };//调用有参构造delete[]a3;	}

析构函数

作用

主要作用于对象销毁前系统自动调用,执行一些清理工作(例如关闭文件、断开网络连接等。)。是用来释放成员变量指向的堆区内存的

格式

析构函数:~类名(){}

特性

1.没有返回值也不写void

2.名字是~+类名,

3.没有函数参数,不可以发生重载

4.没有析构函数 编译器会提供默认的析构函数

5.程序在对象销毁前会自动调用析构函数,不用手动调用,而且只会调用一次

//析构函数:可以释放成员变量指向的堆区内存

class Rectangle {  
private:  double* length;  double* width;  
public:  // 构造函数  Rectangle(double l, double w) {  length = new double(l); // 动态分配内存  width = new double(w);  }  // 析构函数  ~Rectangle() {  delete length; // 释放动态分配的内存  delete width;  }  double area() {  return *length * *width; // 计算面积  }  
};  int main() {  Rectangle rect(5.0, 3.0); // 调用构造函数  cout << "Area: " << rect.area() << endl; // 输出面积  return 0; // rect 被销毁,自动调用析构函数  
}

总结

构造函数:用于初始化对象的状态;在对象创建时自动调用。

析构函数:用于清理对象的资源;在对象销毁时自动调用

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词