对象特性-构造函数和析构函数
基础概念:
构造函数:是一种特殊的方法。主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载
析构函数:析构函数(destruct) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存)
我相信大家对于上面的哪些个解释都懒得看.
说白了构造函数就是给类的对象赋值,析构函数就是用来清理善后的操作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存(这些后几篇博客会介绍到))
构造函数语法:
类名() {}
- 构造函数,没有返回值也不写void
- 函数名称与类名相同
- 构造函数可以有参数,因此可以发生重载
- 程序在调用对象时候会自动调用构造,无须手动调用,而且只会调用一次
析构函数的语法:
~类名() {}
- 析构函数,没有返回值也不写void
- 函数名称与类名相同,在名称前加上符号 ~
- 析构函数不可以有参数,因此不可以发生重载
- 程序在对象销毁前会自动调用析构,无须手动调用,而且只会调用一次
#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.
对象特性-构造函数和析构函数相关推荐
- 类和对象—对象特性—构造函数和析构函数
对象的初始化和清理 电子产品的出厂设置以及不用的数据的清理 C++每个对象都有数据的初始化操作和数据清理的设置 构造函数和析构函数 这两个函数是由编译器自动调用的,可以不写 构造函数语法:类名(){} ...
- C++编程入门系列之十四(类与对象:构造函数和析构函数)
C++编程入门系列之十四(类与对象:构造函数和析构函数) 鸡啄米上一节中给大家讲解了类的声明.成员的访问控制和对象,今天鸡啄米给大家讲C++编程入门时同样必须掌握的构造函数和析构函数.从上一讲开始已经 ...
- Android SO逆向-对象的构造函数与析构函数
0x00 这一节我们主要讨论对象的构造函数和析构函数的汇编实现. 0x01 我们先直接看C++代码: #include "com_example_ndkreverse4_Lesson4.h& ...
- 类与对象(中) 构造函数和析构函数
目录 一.类的6个默认成员函数 二.构造函数 2.1定义 2.2特性 1. 函数名和类名相同: 2. 没有返回值: 3.对象实例化的时候编译器自动调用: 4.可以函数重载. 2.3 无参的构造函数和全 ...
- C++ 笔记(17)— 类和对象(构造函数、析构函数、拷贝构造函数)
1. 构造函数 构造函数是一种特殊的函数(方法),在根据类创建对象时被调用.构造函数是一种随着对象创建而自动被调用的函数,它的主要用途是为对象作初始化. 构造函数的名称与类的名称是完全相同的,并且不会 ...
- 初入C++(二)类和对象,构造函数,析构函数
1.c++类的声明和定义. class student { public: char *name; int age; float score; void say(); }; void student ...
- C++中堆对象的构造函数和析构函数逆向分析
实验环境: 操作系统:Windows XP Professional Service Pack 3 集成开发环境:Microsoft Visual C++ 6.0 构建版本:Debug版本 实验代码: ...
- C++对象模型8——构造函数和析构函数中对虚函数的调用、全局对象构造和析构、局部static数组的内存分配
一.构造函数和析构函数中对虚函数的调用 仍然以https://blog.csdn.net/Master_Cui/article/details/109957302中的代码为例 base3构造函数和析构 ...
- 一文详解构造函数和析构函数
一文详解构造函数和析构函数 一.对象的初始化和清理 二.析构函数 三.构造函数可以重载 四.默认构造函数和默认析构函数 五.拷贝构造函数 5.1 编译器提供了默认的构造函数 5.2 拷贝构造函数中形参 ...
最新文章
- Ubuntu 系统通过终端打开AndroidStudio工具
- 聊聊这两年我用到的面试套路和收获
- mipi LCD 的CLK时钟频率与显示分辨率及帧率的关系
- 如何分析802.11协议中的BA帧(block acknowledgement)
- 闪退的解决方法_王者荣耀2.0不闪退需要什么手机?王者荣耀2.0闪退解决方法
- JavaScript算法(实例二)9*9乘法表
- 四川大学网络教育计算机网考,四川大学网络教育学院课程考试试题-第一学期期末考试卷-计算机文化...
- 象棋名手3.26版本32位六核完美破解版,含第四代无敌开局库。
- 解析rtcm32报文工具_RTCM数据格式实时处理方法应用
- 杭州某天使内部邮件曝光:移动互联网创业机会只剩3年
- 华为交换机console口如何设置密码
- python爬取ppt代码_Python爬取PPT模板小工具
- python是解释性语言!
- 模拟光源 html5,光照渲染——用canvas模拟光照效果
- zfs 文件服务器,使用ZFS实现大量快速而又稳定的存储
- xp桌面上的计算机管理,如何解决WinXP系统开机桌面变白显示恢复Active Desktop的问题?...
- 明翰英语教学系列之冠词篇
- 通过adb录制视频并通过FFMPEG将MP4转换成GIF格式(二)
- ccurately Say CocaCola!
- 磊科762虚拟服务器静态,路由器端口映射教程_磊科NW717路由器端口映射设置教程...
热门文章
- 如何使用TVM Pass Relay
- NVIDIA Turing Architecture架构设计(下)
- TensorRT 基于Yolov3的开发
- Nucleus 实时操作系统中断(上)
- 深度学习常见问题解析
- 解决:Plugin ‘maven-compiler-plugin:3.1‘ not found
- 客快物流大数据项目(二十二):Docker环境中安装软件
- 2021年大数据HBase(十五):HBase的Bulk Load批量加载操作
- C++ 虚函数与存虚函数
- Android 接口回调