#include <iostream>
using namespace std;
/*
类会提供
1.默认构造函数(无参构造函数)
2.析构函数,释放在堆区申请空间的数据成员的指针
3.拷贝构造函数(浅拷贝),对象中数据成员进行值赋值
特点1:当类中写了有参构造函数,编译器不会再提供默认构造函数,但会提供拷贝构造函数;
特点2:当类中写了拷贝构造函数,编译器不会再提供其他构造函数(无参构造和有参构造函数,普通构造函数)
*/
class Person{
public:
/*
Person()
{
cout<<"Person无参构造函数"<<endl;
}
*/
/*
Person(int age)
{
m_age = age;
cout<<"Person有参构造函数"<<endl;
}
*/
Person(const Person &per)
{
m_age = per.m_age;
cout<<"Person拷贝构造函数"<<endl;
}
~Person()
{
cout<<"Person析构函数"<<endl;
}
private:
int m_age;
};
void test()
{
//Person per; //若不写无参构造函数,存在有参构造函数,会报没有默认构造函数,符合预期
//Person per1(10);
//Person per2(per1); //若不写拷贝构造函数,编译器会提供默认拷贝构造函数,符合预期
//Person per3; //若写拷贝构造函数,不存在其他构造函数(无参和有参), 会报没有默认构造函数,符合预期
//Person per4(20); //若写拷贝构造函数,不存在其他构造函数(无参和有参), 会报cannot convert parameter 1 from 'const int' to 'const class Person &'
}
int main()
{
test();
return 0;
}
C++ 类默认提供的函数
最新推荐文章于 2023-10-28 19:43:59 发布