构造函数分类:
* 按参数: 有参构造函数和无参构造函数
* 按类型: 普通构造函数和拷贝构造函数
下面举例说明:
/****************************************************
* brief : 构造函数的分类及调用
* author : shao
* date : 2020-02-27
* note : none
*
****************************************************/
/**
* 构造函数分类:
* 按参数: 有参构造函数和无参构造函数
* 按类型: 普通构造函数和拷贝构造函数
*/
#include <iostream>
using namespace std;
class Person{
public:
//无参构造函数
Person()
{
cout << "Person 无参构造函数!" << endl;
}
//有参构造函数
Person(int a)
{
cout << "Person 有参构造函数!" << endl;
}
//拷贝构造函数
Person(const Person &p)
{
cout << "Person 拷贝构造函数!" << endl;
}
//析构函数
~Person()
{
cout << "Person 析构函数!" << endl;
}
};
void test01(void)
{
Person p1; //这里调用无参构造函数
Person p2(1); //这里调用有参构造函数
Person p3(p2); //这里调用拷贝构造函数
/* 这里声明的是匿名对象,其实就是没有名字的对象
* 注:这里匿名对象在本行调用结束后,就会析构掉
*/
Person(10); //这里调用匿名构造函数
Person p4 = Person(100); //与Person p4(100);一样的效果
Person p5 = 200; //隐式转化,与Person p5 = Person(100) = Person p5(100);
Person p6 = p5; //与Person p6(p5)效果一样
/*注:不能用拷贝构造函数初始化匿名对象*/
//Person(p6); //这样会编译不通过
}
int main(void)
{
test01();
return 0;
}
结果如下: