基础概念:

构造函数:是一种特殊的方法。主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载

析构函数:析构函数(destruct) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存)

我相信大家对于上面的哪些个解释都懒得看.

说白了构造函数就是给类的对象赋值,析构函数就是用来清理善后的操作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存(这些后几篇博客会介绍到))

构造函数语法:

                类名() {}

  1. 构造函数,没有返回值也不写void
  2. 函数名称与类名相同
  3. 构造函数可以有参数,因此可以发生重载
  4. 程序在调用对象时候会自动调用构造,无须手动调用,而且只会调用一次

析构函数的语法:

                ~类名() {}            

  1. 析构函数,没有返回值也不写void
  2. 函数名称与类名相同,在名称前加上符号 ~
  3. 析构函数不可以有参数,因此不可以发生重载
  4. 程序在对象销毁前会自动调用析构,无须手动调用,而且只会调用一次
#include<iostream>
using namespace std;class Person
{
public:Person()      //构造函数{cout << "构造函数的调用" << endl;}~Person()        //析构函数“~”是ESC键下面那块{cout << "析构函数的调用" << endl;}
};void test()
{Person p;
}int main()
{test();system("pause");return 0;
}

构造函数的分类及调用:

构造函数实际上总共分为四种:

1.有参构造

2.无参构造

3.普通构造

4.拷贝构造

三种调用:

1.括号法

2.显示法

3.隐式转换法

#include<iostream>
using namespace std;class Person
{
public:Person()    //无参(默认)构造函数{cout << "无参构造函数的调用" << endl;}Person(int a)         //有参构造函数{p_age = a;cout << "有参构造函数的调用" << endl;}Person(const Person& p)  //拷贝函数{cout << "拷贝函数的调用" << endl;}~Person()        //析构函数“~”是ESC键下面那块{cout << "析构函数的调用" << endl;}private:int p_age;
};void test()
{//括号法Person p1;    //无参(默认)Person p2(18);   //有参调用-->括号法Person p3 = Person(p2);  //拷贝函数的调用cout << "------------------------" << endl;//显示法Person p4;Person p5 = Person(18);  //这块单独给Person(18)单独提出来 就是匿名的,因为还没有而名字  这里拿一个Person类的p5来接收Person p6 = Person(p5);  cout << "------------------------" << endl;//注意事项:不要拿拷贝函数来构造一个函数 初始化匿名对象//例如:Person(p3);这样的话  编译器会认为这个Person(p3) ==> Person p3  这样的话会和上面那个报错为:重定义p3//隐式法Person p7 = 18; //相当于Person p7 = Person(18);  -->有参构造Person p8 = p7;  //拷贝构造cout << "------------------------" << endl;}int main()
{test();system("pause");return 0;
}

析构函数:

析构函数:析构函数(destruct) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存)

下篇讲!!!!

Life was like a box of chocolates, you never know what you're going to get.

对象特性-构造函数和析构函数相关推荐

  1. 类和对象—对象特性—构造函数和析构函数

    对象的初始化和清理 电子产品的出厂设置以及不用的数据的清理 C++每个对象都有数据的初始化操作和数据清理的设置 构造函数和析构函数 这两个函数是由编译器自动调用的,可以不写 构造函数语法:类名(){} ...

  2. C++编程入门系列之十四(类与对象:构造函数和析构函数)

    C++编程入门系列之十四(类与对象:构造函数和析构函数) 鸡啄米上一节中给大家讲解了类的声明.成员的访问控制和对象,今天鸡啄米给大家讲C++编程入门时同样必须掌握的构造函数和析构函数.从上一讲开始已经 ...

  3. Android SO逆向-对象的构造函数与析构函数

    0x00 这一节我们主要讨论对象的构造函数和析构函数的汇编实现. 0x01 我们先直接看C++代码: #include "com_example_ndkreverse4_Lesson4.h& ...

  4. 类与对象(中) 构造函数和析构函数

    目录 一.类的6个默认成员函数 二.构造函数 2.1定义 2.2特性 1. 函数名和类名相同: 2. 没有返回值: 3.对象实例化的时候编译器自动调用: 4.可以函数重载. 2.3 无参的构造函数和全 ...

  5. C++ 笔记(17)— 类和对象(构造函数、析构函数、拷贝构造函数)

    1. 构造函数 构造函数是一种特殊的函数(方法),在根据类创建对象时被调用.构造函数是一种随着对象创建而自动被调用的函数,它的主要用途是为对象作初始化. 构造函数的名称与类的名称是完全相同的,并且不会 ...

  6. 初入C++(二)类和对象,构造函数,析构函数

    1.c++类的声明和定义. class student { public: char *name; int age; float score; void say(); }; void student ...

  7. C++中堆对象的构造函数和析构函数逆向分析

    实验环境: 操作系统:Windows XP Professional Service Pack 3 集成开发环境:Microsoft Visual C++ 6.0 构建版本:Debug版本 实验代码: ...

  8. C++对象模型8——构造函数和析构函数中对虚函数的调用、全局对象构造和析构、局部static数组的内存分配

    一.构造函数和析构函数中对虚函数的调用 仍然以https://blog.csdn.net/Master_Cui/article/details/109957302中的代码为例 base3构造函数和析构 ...

  9. 一文详解构造函数和析构函数

    一文详解构造函数和析构函数 一.对象的初始化和清理 二.析构函数 三.构造函数可以重载 四.默认构造函数和默认析构函数 五.拷贝构造函数 5.1 编译器提供了默认的构造函数 5.2 拷贝构造函数中形参 ...

最新文章

  1. Ubuntu 系统通过终端打开AndroidStudio工具
  2. 聊聊这两年我用到的面试套路和收获
  3. mipi LCD 的CLK时钟频率与显示分辨率及帧率的关系
  4. 如何分析802.11协议中的BA帧(block acknowledgement)
  5. 闪退的解决方法_王者荣耀2.0不闪退需要什么手机?王者荣耀2.0闪退解决方法
  6. JavaScript算法(实例二)9*9乘法表
  7. 四川大学网络教育计算机网考,四川大学网络教育学院课程考试试题-第一学期期末考试卷-计算机文化...
  8. 象棋名手3.26版本32位六核完美破解版,含第四代无敌开局库。
  9. 解析rtcm32报文工具_RTCM数据格式实时处理方法应用
  10. 杭州某天使内部邮件曝光:移动互联网创业机会只剩3年
  11. 华为交换机console口如何设置密码
  12. python爬取ppt代码_Python爬取PPT模板小工具
  13. python是解释性语言!
  14. 模拟光源 html5,光照渲染——用canvas模拟光照效果
  15. zfs 文件服务器,使用ZFS实现大量快速而又稳定的存储
  16. xp桌面上的计算机管理,如何解决WinXP系统开机桌面变白显示恢复Active Desktop的问题?...
  17. 明翰英语教学系列之冠词篇
  18. 通过adb录制视频并通过FFMPEG将MP4转换成GIF格式(二)
  19. ccurately Say CocaCola!
  20. 磊科762虚拟服务器静态,路由器端口映射教程_磊科NW717路由器端口映射设置教程...

热门文章

  1. 如何使用TVM Pass Relay
  2. NVIDIA Turing Architecture架构设计(下)
  3. TensorRT 基于Yolov3的开发
  4. Nucleus 实时操作系统中断(上)
  5. 深度学习常见问题解析
  6. 解决:Plugin ‘maven-compiler-plugin:3.1‘ not found
  7. 客快物流大数据项目(二十二):Docker环境中安装软件
  8. 2021年大数据HBase(十五):HBase的Bulk Load批量加载操作
  9. C++ 虚函数与存虚函数
  10. Android 接口回调