//1.编译器会给一个类 至少添加3个函数 默认构造 析构函数 拷贝构造(值拷贝)
//2.如果我们自己提供了有参构造函数,编译器就不会提供默认构造函数(无参构造函数),但依然会提供拷贝构造函数
//3.如果我们自己提供了拷贝构造函数,那么编译器就不会提供其他的构造函数
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
//1.编译器会给一个类 至少添加3个函数 默认构造 析构函数 拷贝构造(值拷贝)
//2.如果我们自己提供了有参构造函数,编译器就不会提供默认构造函数(无参构造函数),但依然会提供拷贝构造函数
//3.如果我们自己提供了拷贝构造函数,那么编译器就不会提供其他的构造函数
class Person
{
public:
Person()
{
cout << "默认构造函数的调用" << endl;
}
Person(int age)
{
m_Age = age;
cout << "有参构造函数调用" << endl;
}
Person(const Person &p)
{
m_Age = p.m_Age;
cout << "拷贝函数的调用" << endl;
}
~Person()
{
cout << "析构函数的调用" << endl;
}
int m_Age;
};
void test01()
{
Person p1; //提供拷贝构造后,要自己提供默认构造,否则出错
p1.m_Age = 24;
Person p2(p1);
cout << "p2的年龄" << p2.m_Age << endl;
}
int main()
{
test01();
system("pause");
return EXIT_SUCCESS;
}