C++ 构造函数分类以及调用

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

//1、分类
//按照参数进行分类  有参构造函数    无参构造函数(默认构造函数)
//按照类型进行分类  普通构造函数    拷贝构造函数
class Person
{
public:
	//默认构造
	Person()
	{
		cout << "Person的默认构造函数调用" << endl;
	}
	//有参构造
	Person(int age)
	{
		m_Age = age;
		cout << "Person的有参构造函数调用" << endl;
	}

	//拷贝构造
	Person( const Person &p ) // 类名( const 类名&  aa )   //  本质上 Person * p = &per;
	{
		cout << "Person的拷贝构造函数调用" << endl;
		m_Age = p.m_Age;
	}

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

	int m_Age;

};


//2、调用
void test01()
{
	无参构造函数
	//Person p1;

	有参构造函数
	括号法
	//Person p2(10); //有参构造调用
	//Person p3(p2);  //拷贝构造函数调用

	//cout << "p3的年龄: " << p3.m_Age << endl;

	显示法
	//Person p4 = Person(10); //有参构造函数
	//Person p5 = Person(p4); //拷贝构造函数调用


	//注意点 
	//Person p(); //不可以用括号法 调用无参构造函数 原因Person p();编译器认为是一个函数的声明

	//Person(10); //匿名函数对象 特点:当前行执行完后,系统就回收

	//Person(p5); //不可以调用拷贝构造函数 来初始化匿名函数对象 Person(p5); 编译器认为代码为 Person p5;  


	//隐式法
	Person p6 = 10; // Person p6 = 10; 等价于写了  Person p6 = Person(10)
	Person p7 = p6;

}


int main(){

	test01();

	system("pause");
	return EXIT_SUCCESS;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值