#include <iostream>
using namespace std;
//1、构造函数分类
// 按照参数分类分为 有参和无参构造 无参又称为默认构造函数
// 按照类型分类分为 普通构造和拷贝构造
class Person {
public:
//无参(默认)构造函数
Person() {
cout << "无参构造函数!" << endl;
}
//有参构造函数
Person(int a) {
age = a;
cout << "有参构造函数!" << endl;
}
//拷贝构造函数
Person(const Person& p) {
age = p.age;
cout << "拷贝构造函数!" << endl;
}
//析构函数
~Person() {
cout << "析构函数!" << endl;
}
public:
int age;
};
//调用有参的构造函数
void test02() {
//2.1 括号法,常用
Person p1; //无参构造函数
Person p2(10); //有参构造函数
Person p3(p2); //拷贝构造函数
//注意1:调用无参构造函数不能加括号,如果加了编译器认为这是一个函数声明
//Person p2();
//2.2 显式法
Person p4 = Person(10); //有参构造函数
Person p5 = Person(p4); //拷贝构造函数
//Person(10)单独写就是匿名对象 当前行结束之后,马上析构
//2.3 隐式转换法
Person p6 = 10; // Person p6 = Person(10); 有参构造函数
Person p7 = p6; // Person p5 = Person(p6); 拷贝构造函数
//注意2:不能利用 拷贝构造函数 初始化匿名对象 编译器认为是Person (p6) == Person p6,重定义
//Person (p6); //重定义
}
int main() {
test02();
system("pause");
return 0;
}
输出:
无参构造函数!
有参构造函数!
拷贝构造函数!
有参构造函数!
拷贝构造函数!
有参构造函数!
拷贝构造函数!