函数的分类以及调用
#include<bits/stdc++.h>
using namespace std;
class Person{
public:
Person(){
cout<<"Person的无参构造函数调用"<<endl;
}
Person(int a){
age=a;
cout<<"Person的有参构造函数调用"<<endl;
}
Person(const Person &p) {
age=p.age;
cout<<"Person的拷贝构造函数调用"<<endl;
}
~Person(){
cout<<"Person的析构函数调用"<<endl;
}
int age;
};
void test01(){
//括号法
Person p1;
Person p2(10);
Person p3(p2);
//调用默认构造函数时候,不要加() ,编译器会认为这是一个函数声明
cout<<"p2的年龄为:"<<p2.age<<endl;//10
cout<<"p3的年龄为:"<<p3.age<<endl;//10
//显示法
Person p4;
Person p5=Person(10);
Person p6=Person(p5);
//隐式转换法
Person p7=10;
Person p8=p7;
}
int main(){
test01();
return 0;
}
这段代码主要涉及了C++中的构造函数和拷贝构造函数的使用,以及对象的初始化方式。
-
构造函数:在类中定义的函数,用于初始化对象的数据成员。在本代码中,Person类中定义了无参构造函数、有参构造函数和拷贝构造函数。
-
对象的初始化方式:
- 括号法:使用类的构造函数初始化对象,可以是无参构造函数、有参构造函数或拷贝构造函数。
- 显示法:使用类的构造函数显式地初始化对象。
- 隐式转换法:使用基本数据类型的值初始化对象,编译器会自动调用相应的构造函数。
-
拷贝构造函数:用于在创建新对象时,以已有对象的值作为初始值。在本代码中,Person类中定义了拷贝构造函数,用于在创建p3和p6时,以p2和p5的值作为初始值。
-
析构函数:在对象销毁时自动调用,用于释放对象占用的资源。在本代码中,Person类中定义了析构函数,用于在对象销毁时输出一条信息。