#include <iostream>
using namespace std;
#include <string>
#include <time.h>
#include<stdio.h>
#include<stdlib.h>
//无参构造(默认构造) 有参构造
//按照类型分类
class Person
{
public:
Person()
{
cout<<"Pweson的构造函数调用"<<endl;
}
Person(int a)
{
age=a;
cout<<"Pweson的构造函数调11用"<<endl;
}
Person(const Person &p)//拷贝构造函数
{
age=p.age;
cout<<"Pweson的构造函数22调用"<<endl;
}
~Person()
{
cout<<"Person的析构函数"<<endl;
}
int age;
};
void test()
{
//1括号法
Person p;
Person p2(10);
Person p3(p2);
//调用默认构造函数时不要用();因为Person p();这行编译器会认为是一个函数的声明
//cout<<"p2.年龄"<<p2.age<<endl;
//cout<<"p3.年龄"<<p3.age<<endl;
//2.显示法
/*Person p1;
Person p2=Person(10);
Person p3=Person(p2);*/
//cout<<"p3.年龄"<<p3.age<<endl;
//Person(10); //匿名对象 当前执行完毕后,系统会立即回收匿名对象
//cout<<"aaa"<<endl;
//注意事项 不要利用拷贝构造函数 初始化匿名对象
//3.隐式转换法
/*Person p4=10;//相当于 p4=Person(10);
Person p5=p4*/;
}
int main()
{
test();
system("pause");
return 0;
}