C++的构造函数
创建一个Student类
class Student
{
private:
/* data */
char* name ;
int age ;
public:
Student(){
cout<<"空参数构造函数"<<endl
}
Student(char*name , int age){
this->name = name;
this->age = age;
cout<<"两个参数构造函数"<<endl
}
public :
void setAge(int age){
this->age = age;
}
void setName (char * name){
this->name = name;
}
int getAge(){
return this->age;
}
char* getName(){
return this->name;
}
};
构造函数的调用
Student stu ();//空参构造
Student stu ("ddd",24);//两个参数的构造
Student *stu = new Student ("ddd",24);//两个参数的构造
Student *stu = (Student*)malloc (sizeof(Student));//没有调用构造函数
默认值的构造函数
Student(char*name):age(0){
this->name =name;
}
Student(char*name):Student(name,0){
this->name =name;//先调用两个参数在调用一个参数的
}
析构函数
~Student(){
//对象销毁时候调用
//回收释放内纯
}
析构函数只能是空参的析构函数
malloc free new delete
C和C++无法自动回收内存,创建需要自己回收内存,否则会造成内存泄露
Student stu;//在栈中开辟内纯
//malloc 和 free 是一套
Student *stu =(Student*)malloc (sizeof(Student));
free(stu);
//用了new 用delete
Studnet *stu = new Student("ddd",24);
delete(stu);
拷贝构造函数
Student *stu = new Studnet("ddd",24);
Studnet *stu2 = stu; //浅拷贝 拷贝的是地址
Studnet(const Student& stu){
//拷贝构造函数
//开辟内存等。。。
}
Student stu("DDD",1);
Student stu2 = stu;//会调用拷贝构造函数 是赋值
Student stu3;
stu3 = stu; //不会调用拷贝构造函数 是赋值
//getStudent 是一个方法在返回值是Student时会调用拷贝构造函数
Student stu4 = getStudent("aaaa");
//print 是一个方法 参数传递是Student 会调用拷贝构造函数
Student stu5 ("zzz",11);
print(stu5);