第三次课

#include<stdio.h>
#include
int main(int argc, const char* argv[]) {
Student yuechu;
yuechu.init();
yuechu.set_name(“yue chu”);
yuechu.print();
yuechu.clean();
int* p = new int;
//Student *p = new Student;//指针永远是8个字节
//p->init();
//p->set_name(“Dsads”);
//p->print();
p->clean();

Student a;
int b = 0;
int c;
c = b;
return 0;

}
struct Student {
private:
char* _name;
char* _id;
public:
void set_name(const char* name) {
//有了变量以后必须要初始化一下
if (_name != nullptr)
delete[] _name;
_name = nullptr;
if (name == nullptr)
return;
_name = new char(strlen(name) + 1);
strcpy(_name, name);
}
void print() {
printf("%s\n", _name);
}
//void clean() {
//delete[] _name;
//}
void init() {
_name = nullptr;
_id = nullptr;
}
Student() {//默认构造函数,无参的构造函数
printf(“Student()\n”);
_name = nullptr;
_id = nullptr;
}
Student(const char* name) {//构造函数,有参的的构造函数
printf(“Student()\n”);
if (name == nullptr)
return;
_name = nullptr;
_id = nullptr;
}
//析构函数,不能有任何参数,不能被重载
~Student()
{
delete[] _name;
}

//拷贝构造函数,用一个已经存在的student类型的变量
//去初始化另外一个student的变量
//如果刚开始不是指针的话,就不用一定要写拷贝构造函数
Student(const Student& other) {//&other不是新的变量,如果不用引用的话就会发生递归
	_name = nullptr;
	_id = nullptr;
	if (other._name == nullptr);
	return;
	_name = new char[strlen(other._name) + 1];
	strcpy(_name, other._name);
}

};
//int add(int a, int b)
//{
// return a + b;
//}
//double _add(double a, double b)
//{
// return a + b;
//}不能重复两个函数,但是函数体是一模一样,只不过接受的类型不一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值