当前位置: 首页 > wzjs >正文

外贸定制网站营销网站建设多少钱

外贸定制网站,营销网站建设多少钱,做瞹视频网站,优化图片传网站目录 为什么我们需要构造函数? 什么是构造函数? 🧬 本质:构造函数是“创建对象的一部分” 为什么 需要析构函数? 什么是析构函数? 析构函数的核心作用 ❗注意点 为什么我们需要构造函数&#xff1f…

 

目录

 为什么我们需要构造函数?

什么是构造函数?

🧬 本质:构造函数是“创建对象的一部分” 

为什么 需要析构函数?

什么是析构函数?

析构函数的核心作用

❗注意点

为什么我们需要构造函数?

目的:在对象被创建(分配内存)时,自动初始化其成员变量,并完成一些必要的资源准备。 

核心本质:

  1. 构造函数 = 一种特殊的成员函数;

  2. 自动被调用,不能手动调用;

  3. 目的是保证对象在“出生”时是有效、完整的。

如果我们创建一个类 Person,它有名字和年龄两个成员变量。我们每次创建这个对象时都希望它是有意义的、状态合法的。 

class Person {
public:std::string name;int age;
};

如果你直接创建: 

Person p;

这样写当然是可以的,但是存在几个问题:

  1. 麻烦:每次创建都要写 .name = ....age = ...,很啰嗦。

  2. 容易出错:你可能忘记设置某个属性,比如只设置了名字,没有设置年龄。

  3. 没有保障:谁都可以创建一个“空白”的 Person,然后留下“脏数据”。

这会导致一大堆 bug。


什么是构造函数?

构造函数是一种特殊的函数,在你创建对象的时候,自动调用,用来进行初始化。

关键点:

  • 它和类同名。

  • 它没有返回值。

  • 它在对象创建的那一刻被调用(不是你手动调用,它自动来)。

  • 它的存在是为了:让对象一出生就是“有意义的、完整的”状态。

class Person {
public:std::string name;int age;// 构造函数Person(std::string n, int a) {name = n;age = a;}
};int main() {Person p("Alice", 30);  // ← 自动调用构造函数
}

你创建对象的时候,构造函数就被调用,把 name 和 age 初始化成你想要的值。 


 

🧬 本质:构造函数是“创建对象的一部分” 

你可以这样理解:

Person p("Alice",18);

这不是一句“函数调用”,而是: 

“我想创建一个叫 pPerson 类型的对象,它的初始状态是 name = "Alice"age = 30”。 

而构造函数的作用,就是: 

根据你提供的参数,决定这个对象“出生”时是什么样子。

所以构造函数是一种初始化的保证机制。 

 


为什么 需要析构函数?

C++ 是一门**“手动管理资源”**的语言(不像 Python、Java 有垃圾回收),也就是说: 

你创建了什么资源,就必须自己负责把它销毁。 

想象一个例子: 

class MyClass {
public:int* data;MyClass() {data = new int[100];  // 开辟了内存}
};

你用 new 分配了内存。

然后当你 main() 函数结束时,这个对象不再使用了。但那块 new 出来的内存还留在内存里!

这叫内存泄漏。

如果你每次都得自己写:

delete[] obj.data;

那太痛苦了,而且容易忘记。

于是 C++ 提供了解决方案:析构函数。


 

什么是析构函数?

析构函数是一个在对象“销毁”时自动调用的特殊函数。

它的作用是:在对象生命结束时,做一些清理工作,比如释放内存、关闭文件、断开连接等。 

  • 名字和类名相同,但前面有一个 ~(波浪号)。

  • 没有参数。

  • 没有返回值。

  • 不能重载(每个类只有一个析构函数)。

class MyClass {
public:int* data;MyClass() {data = new int[100];std::cout << "构造函数:分配内存" << std::endl;}~MyClass() {delete[] data;std::cout << "析构函数:释放内存" << std::endl;}
};int main() {MyClass obj; // 构造函数被调用
}               // 离开作用域,析构函数被自动调用

 

析构函数的核心作用

动作阶段你写的函数系统调用时机
对象创建构造函数new、定义变量时
对象销毁析构函数delete、变量离开作用域时

常见的清理操作包括:

  • delete 动态分配的内存

  • fclose() 关闭文件

  • 断开数据库连接

  • 打印日志(对象销毁时记录)


 

❗注意点

1. 自动对象 vs 动态对象

{MyClass a;  // 离开花括号,析构函数自动被调用
}MyClass* b = new MyClass();
// 只有当你 delete b; 析构函数才会被调用

所以:用 new 创建的对象必须手动 delete,否则析构函数不会执行!

2. 析构函数不能有参数,也不能重载

析构函数永远只有一个,不能像构造函数那样重载多个版本。

3. 析构函数可以是 virtual(虚析构)

virtual ~Base() {}

 如果你将来会用继承或多态,一定要写虚析构函数,否则可能导致资源无法正确释放(对象“表面”销毁了,内部派生类的资源没被释放)。

http://www.dtcms.com/wzjs/263452.html

相关文章:

  • 具有营销型网站的公司有哪些怎么查百度收录
  • 怎样更换网站cmsseo俱乐部
  • 免费申请网站永久域名怎么推广平台
  • 婚庆公司加盟seo顾问咨询
  • 做网站要找什么seo外链论坛
  • wordpress 插件 设计淘宝seo是指什么
  • 网站备案有哪些费用域名检测工具
  • mukioplayerwp wordpressseo博客是什么意思
  • 如何做国际网站首页江苏网络推广公司
  • 建立模板wordpress萌新seo
  • 如何做网站泛目录解析输入搜索内容
  • 网页游戏 手机班级优化大师免费下载
  • 网站制作与网站建设pdf百度营销搜索推广
  • 在腾讯云怎样建设网站网站优化方案设计
  • 互联网网站如何做罗湖区seo排名
  • wordpress重新生成永久链接seo论坛
  • 网站建设低价建站损失在哪里真正免费的网站建站
  • 浙江华临建设集团网站优质的seo网站排名优化软件
  • 网站页面怎样做1920网络销售怎么找客源
  • 使用java做网站常德seo
  • 佛山网站建设推广订做汽车网络营销推广方案
  • 上海建设局官方网站本周的新闻大事10条
  • 响应式网站做mip淘宝关键词排名怎么查
  • 昆山做轮胎网站西安的网络优化公司
  • 专业微信网站建设公司首选新媒体销售好做吗
  • 怎么自己编程做网站在线子域名二级域名查询工具
  • 重庆教育建设集团有限公司网站搜索关键词热度
  • 综合性型门户网站有哪些企业网络营销顾问
  • 建站平台功能结构图百度24小时客服电话136
  • 公司网站应达到的功能制作网站的全过程