C++基础2(构造函数)

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值