C++析构函数和构造函数的详解

析构函数和构造函数

编译器会提供一个空的无参的析构函数和构造函数,在类的new或者实例化 和delete的时候会自动调用

析构函数:

	语法:
		<类名> ()
	定义
		类的初始化函数
		一般用于成员变量的初始化赋值
	注意事项:
		构造函数有参数,所以能够重载
	调用方法:
		有参调用和无参调用
		普通构造和拷贝构造

拷贝构造的一般写法:意思是将构造函数的形参的所有属性拷贝到这个新定义的类实例里面

class Person{	//若不写,则编译器会自动调用默认拷贝构造函数,将参数全部拷贝
		Person(const Person &p){
			//&引用方式传入,少占用
			//const修饰,防止误操作修改
		}
}
		括号法
			Person p1;//默认构造函数
			Person p1();//语法有问题,好像是int func()一样
			Person p1(10);//有参构造函数
			Person p1(p2);//拷贝构造函数
		显示法
			Person p1;//默认构造函数
			Person p1 = Person(10);//有参构造函数
			Person p1 = Person(p2);//拷贝构造函数
			Person(10);//匿名构造函数,系统运行后会立刻回收,注意:不能匿名拷贝,否则编译器会将其认定为实例化Person(p2);//实例化p2
		隐式转换法
			Person p1;//默认构造函数
			Person p1 = 10;//有参构造函数
			Person p1 = p2;//拷贝构造函数

构造函数:

	语法:
		~<类名> ()
	定义
		类的清理函数
	注意事项:
		析构函数不能有参数,所以不能有重载		

拷贝构造函数的调用时机
1、用户主动调用拷贝构造函数,用一个已经创建好的对象来创建一个新的对象
2、值传递的方式传入函数的时候会调用拷贝函数(系统自己调用)
3、值方式返回对象(系统自己调用)

构造函数的调用规则
1、默认构造函数,无参,空函数
2、默认析构函数,无参,空函数
3、默认拷贝构造函数,将类中所有成员变量拷贝

若写了有参构造函数,则不会调用默认构造函数
若谢了拷贝构造函数,则不会调用默认拷贝构造函数

构造函数的初始化列表

例子:

class Person{
	int m ;
	int n;
	Person(int a,int b):m(a),n(b){//这里的操作同下面注释的操作一样
		//m=a;
		//m=b;
	}		
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值