C++学习笔记

C++学习笔记,第1张

前言:
💂作者简介:大家好,我是翼同学!
📃个人主页:翼同学的CSDN博客
🔥系列专栏:【C++学习笔记】更新中…
👏备注:如果文章有误,请指正,万分感谢!让我们一起学习,一起进步。



✅最后:如果文章对您有帮助,请👍三连支持一下博主哦。


🤞

目录
  • 1️⃣前言
  • 2️⃣构造函数
    • 🟥认识
    • 🟩实例
  • 3️⃣析构函数
    • 🟥认识
    • 🟩实例
  • 4️⃣说明


1️⃣前言

🔋什么是构造函数?

  • 构造函数是一种特殊的方法
  • 用于创建对象时初始化对象成员

🔋什么是析构函数?

  • 析构函数与构造函数相反
  • 当对象结束其生命周期,系统自动执行析构函数
  • 即释放内存,撤销类对象

2️⃣构造函数 🟥认识

💡为什么要有构造函数?

  • 当我们的类有了构造函数后,一旦创建类的对象,构造函数就马上被调用,给类的对象分配内存,并赋予初始值。


  • 反之,如果一个类没有构造函数,那么创建对象时就仅仅是创建,并没有初始化,此时就需要人为初始化。


  • 但是,当类的数据成员属于私有成员或保护成员时,我们就无法访问,更无法进行初始化,所以,类的初始化工作就落到了构造函数上。


✨C++规定:

  • 与类同名的成员函数就是构造函数

✨构造函数的特点:

  • 没有返回类型
  • 当创建类对象时会被自动调用

🟩实例

🌱例子1

  • 当我们在主函数里创建一个圆Cir的对象c时,系统会自动调用构造函数,初始化对象


🌱例子2

  • 我们可以在类的外部定义构造函数
  • 在类外部定义构造函数时,函数名前必须加上类名::
  • 这与其他成员函数一样
  • 还有一点就是,构造函数没有返回值,没有返回值!


🌱例子3

  • 添加两个成员函数

运行结果为:


🌱例子4:

  • 构造函数可以带上参数
  • 默认的构造函数没有任何参数
  • 当构造函数带上参数后,创建对象时就能给对象赋初始值

运行结果为:


🌱例子5:

  • 可以重载构造函数

运行结果如下:

  • 也就是说,C++会根据声明中的参数选择合适的构造函数

🌱例子6:

  • 当我们声明一个带有参数的构造函数时,一旦创建无参对象,就不能正确的编译。


比如这个有参构造函数:

一旦我们在主函数里创建无参对象,就会报错。


如图:

解决方法有两个:

  1. 增加一个无参构造函数
  2. 有参构造函数设置默认值

1)增加一个无参构造函数

如图:

2)有参构造函数设置默认值

3️⃣析构函数 🟥认识

💡为什么要有析构函数?

  • 析构函数被用于释放类的对象
  • 比如构造函数从堆中分配了内存,那么当对象的生命周期结束时,这块内存就必须被释放
  • 而这就是析构函数的工作

✨C++规定:

  • 带有~类名的成员函数就是析构函数

✨析构函数的特点:

  • 没有返回类型
  • 没有参数
  • 无法重载,即每个类只有一个析构函数

🟩实例

🌱例子

  • 下面例子中,~Student就是一个析构函数

  • 构造函数分配了一段堆内存给数据成员name
  • 一旦创建类的对象,其就会有一段堆内存空间
  • 而当对象在撤销时,释放该内存的工作就落在析构函数身上了
  • 一个类可以有多个构造函数,但析构函数只能有一个

4️⃣说明
  • C++规定,每个类都必须有一个构造函数,如果我们没有设置构造函数的话,C++就会提供一个默认的构造函数,该默认的构造函数就是一个无参的构造函数,它仅负责创建对象空间,而不做任何初始化工作。


  • 如果类中已经定义了构造函数,那么C++就不会提供默认构造函数。


    此时如果为类定义的是一个带参构造函数,那么还想要有无参构造函数的话,就必须自己定义。


好了,希望这篇文章能对你有所帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/567497.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-09
下一篇2022-04-09

发表评论

登录后才能评论

评论列表(0条)

    保存