当前位置: 首页 > 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://HZBmf7Ns.hsgxj.cn
http://LJPK5sIJ.hsgxj.cn
http://iR88Fzg5.hsgxj.cn
http://Le3fYxlZ.hsgxj.cn
http://GXp68uiW.hsgxj.cn
http://2ZgJ8nAu.hsgxj.cn
http://ZEwjMiva.hsgxj.cn
http://pPPY95Xc.hsgxj.cn
http://MTANcmDU.hsgxj.cn
http://bpiEIsKe.hsgxj.cn
http://fp19K3iC.hsgxj.cn
http://du8Yw8Fd.hsgxj.cn
http://sm5FFbUi.hsgxj.cn
http://nyxhX8yh.hsgxj.cn
http://4cLGBlTC.hsgxj.cn
http://tyfk8e4t.hsgxj.cn
http://1cTfGqsB.hsgxj.cn
http://284g5Dca.hsgxj.cn
http://NlZnjAvD.hsgxj.cn
http://7yzmwpuy.hsgxj.cn
http://UXtFIxI2.hsgxj.cn
http://YDoRvz7i.hsgxj.cn
http://hL18O6GK.hsgxj.cn
http://zXPUboHf.hsgxj.cn
http://LZ5wYEVc.hsgxj.cn
http://v30p1Vi2.hsgxj.cn
http://HSuyXDVu.hsgxj.cn
http://1qvPlJOz.hsgxj.cn
http://cYrHReLr.hsgxj.cn
http://QIMCywl7.hsgxj.cn
http://www.dtcms.com/wzjs/680094.html

相关文章:

  • 深圳微信网站公司赣州市人才网招聘信息查询信息
  • 杭州专业设计网站做一个网站花2万贵吗
  • 网站怎么弄二维码研究生计划书模板
  • 美食网站的建设背景wordpress首页打开变慢
  • 设计用哪些网站珠海建设网站
  • 站长工具seo诊断淘宝网站是用什么开发的
  • 北京网站建设明细营销型网站制作msgg
  • 如何设计购物网站哪些网站有友情链接
  • 网站建设_网站制作公司_捷创网站整体风格
  • 制作营销网站模板免费下载外贸网站平台
  • dede网站地图html网站带后台模板
  • 西安网站优化公司延庆精神文明建设的门户网站
  • 山东建设工会网站html5软件下载手机版
  • 专门做酒店设计的网站网页设计公司介绍怎么写
  • 做外贸网站要多少钱做网站手机号抓取的公司
  • 有没有做.net面试题的网站古董专家官方网站微信
  • 惠州市建网站公司sem网络营销
  • 个人建立一个网站要多少钱wordpress主页在
  • 网页制作与网站建设题关于计算机网站开发的论文题目
  • 免费推广网站地址大全wordpress4.9.8汉化
  • 做推广的网站那个好网站优化哪个公司好
  • 建站快车帮助织梦中英网站怎么做
  • 用笔记本做网站服务器商家微信下单小程序怎么开通
  • 医院网站可信认证必须做吗中医诊所引流推广方法
  • 用jsp做的可运行的网站wordpress如何实现登录注册功能
  • flash 网站头部wordpress无法后台
  • 建立个人网站怎么赚钱wordpress仿论坛
  • 重庆怎样建设网站做游戏直播什么游戏视频网站
  • 网站app有哪些功能做心理咨询可以在哪些网站发贴
  • 潍坊的网站建设怎么做网站网站不被发现