c25调用函数调用规则.cpp
#include<iostream>
using namespace std;
class Students04{
// 1.创建好类之后,编译器会默认提供三个函数:默认构造函数、构造函数、拷贝构造函数
// 2.自己写了有参构造函数,编译器就不会提供默认构造函数,拷贝构造函数还是会提供
// 3.如果自己写了拷贝构造函数,编译器不再提供其他构造函数
public:
int s_age;
Students04(int age){
s_age = age;
cout << "有参构造函数" << endl;
}
// // 拷贝构造函数
Students04(const Students04 &p){
s_age = p.s_age;
cout << "有参构造函数" << endl;
}
};
int main()
{
// 情况1:
// 1.创建好类之后,编译器默认提供三个函数:默认构造函数、析构函数、拷贝构造函数
// Students04 stu1; // 调用默认的构造函数 自己写了有参构造,默认就失效
// stu1.s_age = 18;
// Students04 stu2(stu1); // 默认提供拷贝构造函数
// cout << stu2.s_age << endl;
// 情况2:
// 自己写了有参构造函数,编译器就不会提供默认构造函数,拷贝构造函数还是会提供
// Students04 stu1; // 报错,自己写了有参构造函数,编译器就不会提供默认构造函数
// Students04 stu1(18); // 调用默认的构造函数
// Students04 stu2(stu1); // 默认提供构造函数
// cout << stu2.s_age << endl;
// 情况3:
// 3.自己写了拷贝构造函数,编译器不再提供其他构造函数
// Students04 stu1; // 报错,编译器就不会提供默认构造函数
Students04 stu1(18);
Students04 stu2(stu1); // 默认提供拷贝构造函数
cout << stu2.s_age << endl;
return 0;
}