分类方式:
1、按参数分为:有参构造和无参构造
2、按类型分为:普通构造和拷贝构造
三种调用方法:
括号法、显示法、隐式转换法
#include<iostream>
using namespace std;
//对象的初始化和清理
class person
{
public:
//构造函数
//无参和有参构造
person()
{
cout << "无参构造函数" << endl;
}
person(int a)
{
age = a;
cout << "有参构造函数" << endl;
}
//拷贝构造函数
person(const person &p)//利用引用对person中的内容进行调用,放入参数中
{
//将传入的人身上的所有属性拷贝到我身上,谁调用这个函数就会拥有这个属性
age = p.age;//在此处,因为p3调用了p2的属性,因此将p2的年龄赋值给了p3
cout << "拷贝构造函数" << endl;
}
~person()
{
cout << "析构函数" << endl;
}
int age;
};
void test1()
{
//调用方法
//1、括号法
person p1;//默认构造函数调用
//注意调用默认构造参数时不要加()
person p2(10);//有参构造函数
person p3(p2);//拷贝构造函数
//2、显示法
person p1;
person p2 = person(10);
person p3 = person(p2);
person(10);//匿名对象 特点:当前行执行结束后,系统会立即回收匿名对象
//person(p3)//注意不要利用拷贝构造函数初始化匿名对象
//3、隐式转换法
person p4 = 10;//相当于person p4=perso(10); 有参构造
}
int main() {//主函数返回值为整型
system("pause");//暂停系统命令
return 0;//退出程序
}