构造函数的分类及调用

#include<iostream>
#include<string>
using namespace std;
//构造函数的分类及调用
//按照参数 有参和无参
//按照类型分类 普通构造 和 拷贝构造
class person
{
public:
	person()//无参构造函数
	{
		cout << "person的构造函数调用" << endl;
	}
	person(int a)//有参构造函数
	{
		cout << "person的有参构造函数调用" << endl;
	}
	//拷贝构造函数
	person(const person & p)
	{
		cout << "person的kaobei构造函数调用" << endl;
	}
};
void test01()
{
	//1.小括号法
	//person p1;
	//person p2(10);
	//person p3(p2);
//	person p1();//编译器认为是一个函数的声明,不会认为在创建对象
	//2.显式法
	person p1;
	person p2 = person(10);//有参构造
	person p3 = person(p2);//拷贝构造
	//不要利用拷贝函数初始化匿名对象 编译器会认为person(p3)==person p3
//	person(p3);//error
	//3.隐式转换法
	person p4 = 10;//相当于谢了person p4=person(10)
}//注意事项 调用默认构造函数的时候,不要加()
int main()
{
	test01();
	system("pause");
	return 0;
}

一、拷贝构造函数的调用时机
//使用一个已经创建完毕的对象来初始化一个新对象
//值传递的方式给函数参数产值
//值方式返回局部对象

二、构造函数的规则
//1.创建一个类
//默认构造(空实现)
//析构函数(空实现)
//拷贝构造(值拷贝)
//2.如果我们学了有参构造函数,编译器就不再提供默认构造,依然提供拷贝构造
如果用户定义拷贝构造函数,c++不会再提供其他构造函数
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值