学习笔记-c++面向对象程序设计-构造函数的分类及调用

构造函数的分类

两种分类方式

        按参数分为:有参构造无参构造

        按类型分为:普通构造拷贝构造

三种调用方式

        括号法

        显示法

隐式转换法

示例

//1.构造函数分类
//按参数分类分为 有参和无参  无参又称为默认构造函数
//按照类型分为 普通构造和拷贝构造 
#include<bits/stdc++.h>
using namespace std;
class person
{
public:	
	//无参默认构造函数
	person()
	{
		cout<<"无参构造函数"<<endl; 
	} 
	
	//有参构造函数
	person(int a)
	{
		age=a;
		cout<<"有参函数构造"<<endl;	
	} 
	
	//拷贝构造函数
	person(const person &p)//用const是防止传进函数的类被修改 
	{
		age=p.age;
		cout<<"拷贝函数构造"<<endl;
			
	} 
	
	//析构函数
	~person()
	{
		cout<<"析构函数"<<endl;	
	} 

public:
	int age;
};

//2.构造函数的调用

//调用无参构造函数
void test01()
{
	person p;//调用无参构造函数	
} 

//调用有参的构造函数
void test02()
{
	//2.1括号法
	person p1(10);
	//注意1:调用无参构造函数不能加括号,如果加了编译器认为这是一个函数声明
	//person p2() 是错误的 编译器会认为这是 返回值为person,无参的函数的声明
	
	//2.2显示法
	person p2=person(10);//有参构造 
	person p3=person(p2);//拷贝函数构造
	//person(10)单独写就是匿名对象 当前行结束之后,马上析构
	
	//2.3隐式转换法
	person p4=10;//有参构造
	person p5=p4;
	
	//注意2:不能利用 拷贝函数 初始化匿名对象 编译器会认为是对象声明
	// person (p3) 编译器会认为是 person p3; 
} 

int main()
{
	test01();
	test02();
	
	return 0;
} 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值