live long and prosper
在创建类后,在类中会定义一些数据元素成员,如:
#include<iostream>
using namespace std;
class Student{
protected:
string name;
int year;
float gpa;
public:
Student(){
name="your_name";
year=19;
gpa=5.0;
}
void init(string,int,float);
void print();
~Student(){
cout<<"------end-----"<<endl;
};
};
void Student::init(string name,int year,float gpa){
this->name=name;
this->year=year;
this->gpa=gpa;
}
void Student::print(){
cout<<"name->"<<name<<",year->"<<year<<",gpa->"<<gpa<<endl;
}
在上面的类中,定义了name,year,gpa三个成员对象,,接着在使用这个类之前,我们会编写一个init函数(这个函数名字是自定义的),使用init函数对成员对象初始化,以便调用该类。
(1)但是,如果程序员在编写一个类后时,没有编写init函数,或者没有调用init函数就使用了类中的成员函数,此时,成员对象的值时位置的,这个程序时及其危险的存在。
(2)在编写类时,如果每次都有编写一个init函数,未免会降低程序生产效率。
为了避免上面情况出现,需要编写构造函数,在类创建后,就可以对类中的成员对象初始化。
自动调用后,就可对成员对象初始化。
Student(){
name="your_name";
year=19;
gpa=5.0;
}
在主程序中,如果没有执行init函数,程序依然可以正常执行
#include"student.h"
using namespace std;
int main()
{
Student c;
c.print();
return 0;
}
执行的结果为:
name->your_name,year->19,gpa->5
------end-----