C++类的构造函数
构造函数和析构函数是类体定义中比较特殊的两个成员函数
析构函数的学习:——————》C++类的析构函数
本文主要介绍构造函数使用方法。
在类的实例进入作用域时,也就是创建一个类的对象时,构造函数就会被调用。
当建立对象时,往往需要做某些初始化的工作,这些工作就在构造函数中完成。
所以构造函数的作用就是进行初始化操作。
构造函数的方法有两种:
1.默认构造函数
构造方法如下:
class CPerson{
public:
CPerson(){
index=0;
age=10;
salary=1000;
}
int index;
int age;
double salary;
};
CPerson()是默认构造函数,不显式写上函数的声明是允许的。
2.带参数的构造函数
构造函数也是可以有参数的,修改上面的代码,构造方法如下:
class CPerson{
public:
CPerson(int x,int y,double z){
index=x;
age=y;
salary=z;
}
int index;
int age;
double salary;
};
另外
若使用构造函数初始化对象时,可以让新的对象复制已有对象的值。
CPerson p1;
CPerson p2(1,20,2000);
CPerson p3(p2);
这样,新的对象p3就复制了p2的参数。
三合一源代码:
#include<iostream>
using namespace std;
//定义CPerson类
class CPerson{
public:
CPerson(){
//在默认构造函数中初始化
index=0;
age=10;
salary=1000;
}
CPerson(int x,int y,double z){
//在带参数构造函数中初始化
index=x;
age=y;
salary=z;
}
int index;
int age;
double salary;
int getindex(){
return index;
}
int getage(){
return age;
}
double getsalary(){
return salary;
}
};
int main(){
CPerson p1;
cout<<p1.getindex()<<" "<<p1.getage()<<" "<<p1.getsalary()<<endl;
CPerson p2(1,20,2000);
cout<<p2.getindex()<<" "<<p2.getage()<<" "<<p2.getsalary()<<endl;
CPerson p3(p2);
cout<<p2.getindex()<<" "<<p2.getage()<<" "<<p2.getsalary()<<endl;
return 0;
}
结果图:
对于p1和p2的比较,p1使用默认构造函数初始化成员变量,p2使用带参数的构造函数初始化,所以在调用同一个类成员函数getindex、getage、getsalary时输出的结果不同。
p3复制了p2,所以结果相同。