首页 > 其他分享 >18. 构造函数和析构函数,构造函数的分类和调用

18. 构造函数和析构函数,构造函数的分类和调用

时间:2024-09-02 16:27:35浏览次数:14  
标签:p3 调用 函数 18 Person 编译器 和析构 构造函数


  • 构造函数和析构函数
  • 构造函数
  • //没有返回值 不用写void
  • //函数名 与 类名相同
  • //可以有参数 ,可以发生重载
  • //构造函数 由编译器自动调用一次 无须手动调用
  • 析构函数
  • //没有返回值 不用写void
  • 函数名 与类名相同 函数名前 加 ~
  • 不可以有参数 ,不可以发生重载
  • 析构函数 也是由编译器自动调用一次,无须手动调用
  • 构造函数的分类和调用
  • 分类
  • 按照参数分类: 有参 无参(默认)
  • 按照类型分类: 普通 拷贝构造 ( const Person & p )
  • 调用
  • 括号法
  • 显示法
  • 隐式法
  • 注意事项
  • 不要用括号法 调用无参构造函数 Person p3(); 编译器认为代码是函数的声明
  • 不要用拷贝构造函数 初始化 匿名对象 Person(p3); 编译器认为 Person p3对象实例化 如果已经有p3 p3就重定义

匿名对象 特点: 当前行执行完后 立即释放

构造函数和析构函数.cpp

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

class Person
{
public: //构造和析构必须要声明在全局作用域

	//构造函数
	//没有返回值  不用写void
	//函数名 与 类名相同
	//可以有参数  ,可以发生重载
	//构造函数 由编译器自动调用一次 无须手动调用
	Person()
	{
		cout << "Person的构造函数调用" << endl;
	}
	

	//析构函数
	//没有返回值   不用写void
	//函数名 与类名相同  函数名前 加 ~
	//不可以有参数 ,不可以发生重载
	//析构函数 也是由编译器自动调用一次,无须手动调用
	~Person()
	{
		cout << "Person的析构函数调用" << endl;
	}

};

void test01()
{
	Person p;

}

int main(){

	test01();

	

	system("pause");
	return EXIT_SUCCESS;
}

构造函数的分类以及调用.cpp

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

//构造函数分类
//按照参数分类: 无参构造(默认构造函数) 和 有参构造
//按照类型分类: 普通构造函数    拷贝构造函数
class Person
{
public:
	Person()
	{
		cout << "Person的默认构造函数调用" << endl;
	}

	Person(int age)
	{
		m_Age = age;
		cout << "Person的有参构造函数调用" << endl;
	}


	//拷贝构造函数
	Person(const Person &p )  
	{
		cout << "Person的拷贝构造函数调用" << endl;
		m_Age = p.m_Age;
	}

	//析构函数
	~Person()
	{
		cout << "Person的析构函数调用" << endl;
	}

	int m_Age;
	
};

//构造函数的调用
void test01()
{
	//Person p;

	//1、括号法
	//Person p1(10);
	//Person p2(p);

	//注意事项一 
	//不要用括号法 调用无参构造函数  Person p3();  编译器认为代码是函数的声明
	

	//2、显示法
	//Person p3 = Person(10); //有参构造
	//Person p4 = Person(p3); //拷贝构造

	//Person(10); //匿名对象  特点: 当前行执行完后 立即释放

	//cout << "aaa" << endl;

	//注意事项二
	//不要用拷贝构造函数 初始化 匿名对象 Person(p3); 编译器认为 Person p3对象实例化  如果已经有p3  p3就重定义

	
	//3、隐式法  
	Person p5 = 10; //Person p5 = Person(10);
	Person p6 = p5;



}

int main(){
	test01();
	//Person p(18);
	//Person p2(p);
	//cout << "p2的年龄: " << p2.m_Age << endl;


	system("pause");
	return EXIT_SUCCESS;
}


标签:p3,调用,函数,18,Person,编译器,和析构,构造函数
From: https://blog.51cto.com/zaishu/11898904

相关文章

  • 45. 继承中的构造和析构
    继承中的构造和析构先调用父类构造,再调用其他成员构造,再调用自身构造,析构的顺序与构造相反利用初始化列表语法显示调用父类中的其他构造函数父类中构造、析构、拷贝构造、operator=是不会被子类继承下去的#define_CRT_SECURE_NO_WARNINGS#include<iostream>usingname......
  • 亦菲喊你来学机器学习(18) --TF-IDF方法
    文章目录TF-IDF词频TF逆文档频率IDF计算TF-IDF值应用实验使用TF-IDF1.收集数据2.数据预处理3.构建TF-IDF模型对象4.转化稀疏矩阵5.排序取值完整代码展示jieba分词总结TF-IDFTF-IDF(TermFrequency-InverseDocumentFrequency,词频-逆文档频率)是一种用于信息检......
  • 最新LiveNVR版本优化解决大疆无人机推花屏问题,实现大疆无人机RTMP推流转GB28181级联输
    @目录1、无人机推流转国标2、获取RTMP推流地址2.1、RTMP推流地址格式2.2、推流地址示例2、设备RTMP推流3、配置拉转RTMP3.1、直播流地址格式3.2、直播流地地址示例3.3、通道配置直播流地址4、配置级联到GB28181国标平台5、更多问题5.1、大疆无人机推流花屏6、非国标直播流转GB2818......
  • [KB]Office安装出现报错30182-39.md
    问题现象:需重新启动很抱歉,遇到问题。请在重启计算机后重试。联机查找更多帮助。错误代码:30182-39反复重启后再执行安装,报错没有任何变化。原因分析:这个问题一般出现在同时安装了Office和Office365然后卸载了他们之后,再重新安装Office时出现;根本的原因就是多个版本共存与OS中,卸载......
  • RHEL8.9中anywhere报错error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key
    本文写于2024年9月2日,维护有效期两年.先说解决方法,进入anywhere的keys目录,即/usr/local/lib/node_modules/anywhere/keys后,备份后生成rsa:2048位的新证书. 最近学习vite+vue,跟着这个文档做的https://segmentfault.com/a/1190000041324864可是在进入dist输出目录后,运......
  • 18046 字母分类统计
    ###思路1.读取输入的一行字符。2.初始化计数器:字母、数字、空格和其它字符的个数。3.遍历每个字符,根据其类型更新相应的计数器。4.输出计数结果,格式为:字母、数字、空格和其它字符的个数,中间以空格分隔。###伪代码1.读取输入的一行字符。2.初始化计数器:letters......
  • 18047 水仙花数
    ###思路1.遍历所有的三位数(100到999)。2.对于每个数,提取其百位、十位和个位数字。3.计算这些数字的立方和。4.如果立方和等于原数,则该数是水仙花数,输出该数。###伪代码1.遍历i从100到999:  -提取百位数字:hundreds=i/100  -提取十位数字:tens=(i/1......
  • Linux驱动开发基础(DS18B20温度模块)
    所学来自百问网目录1.DS18B20简介2.硬件设计3.软件设计3.1 存储器介绍3.2 通信时序3.2.1初始化时序3.2.2写时序3.2.3 读时序3.3常用命令4.示例代码4.1驱动代码4.2应用代码4.3Makefile4.4实验效果1.DS18B20简介DS18B20温度传感器具有线路简单......
  • ARC183D 做题记录
    超棒的贪心构造题。可以观察到每次操作的两个叶子,充要条件是路径上匹配边和非匹配边交替出现,操作完后全部取反。首先考虑答案上界,从是否能取到上界入手,是本题的突破口。考虑操作两个叶子\(x,y\),收益为\(dep[x]+dep[y]-2dep[\text{LCA}(x,y)]\)。若固定根\(r\),当\(\text......
  • 春秋云镜CVE-2022-28525(ED01-CMS v20180505 存在任意文件上传漏洞)
    1:访问靶机发现是登录界面2:尝试使用弱口令爆破(明文传输)3:添加pyload并选择攻击类型字典我们随便选择的,实际情况需要实际定义爆破成功,用户名:admin密码:admin登录成功4:找到如图模块,上传图片马上传成功(上传时需要抓包改上传类型)5:使用蚁剑连接,拿到flag......