构造函数
1.没有返回值
2.构造函数可以重载
3.调用没有参数的构造函数的时候,后面不可以加括号
4.对象的生成绝对需要调用构造函数
5.没有实现构造函数,编译器会生成一个空的构造函数
6.一旦自己实现构造函数,编译器就不会再自己生成构造函数
7.构造函数不允许手动调用
class CStudent
{
private:
char _name[20];
int _num;
int _sex;
double _grade;
public:
CStudent() //CStudent的构造函数
{
cout << "CStudent()" << endl;
for (int i = 0; i < 20; i++)
{
_name[i] = 0;
}
_num = 0;
_sex = 0;
_grade = 0;
}
CStudent(char *name, int num, int sex, double grade) //CStudent的构造函数
{
if (NULL == name)
{
return;
}
strncpy_s(_name, strlen(name) + 1,name, strlen(name) + 1);
_num = num;
_sex = sex;
_grade = grade;
}
void show() //CStudent的show函数
{
cout << "name: " << _name << endl;
cout << "num: " << _num << endl;
_sex == 1 ? cout << "sex: MAN" << endl
: cout << "sex: WOMAN" << endl;
cout << "grade: " << _grade << endl;
}
void set_grade(double grade)
{
if (grade<0 || grade>100)
{
return;
}
_grade = grade;
}
char *get_name()
{
char *name=new char[20];
strncpy_s(name, strlen(_name) + 1,_name, strlen(_name) + 1);
return name;
}
int get_sex()
{
return _sex;
}
};
int main()
{
CStudent stu1;
stu1.set_grade(10);
stu1.show();
CStudent stu2("WangHong",12,0,100.0);
stu2.show();
char name[20];
strncpy_s(name, strlen(stu2.get_name()) + 1, stu2.get_name(), strlen(stu2.get_name()) + 1);
cout<<name<< endl;
stu2.set_grade(89.0);
stu2.get_sex() == 1 ? cout << "sex: MAN" << endl
: cout << "sex: WOMAN" << endl;
stu2.show();
}
访问限定符
访问限定符是用于指定成员或者类型的可访问性的关键字。
public: 共有的,外界内部都可以访问
private: 私有的,只有类内部的成员才可以访问
protect: 保护的 继承
不允许返回私有成员变量的地址、引用
成员变量
可读可写 public
可读不可写
可写不可读
不可读也不可写 private
析构函数
1.没有返回值
2.没有参数
3.不可重载
4.~+类名定义
5.可以手动调用,但是不建议手动调用
class CStudent
{
private:
char *_name;
int _num;
int _sex;
double _grade;
public:
CStudent()
{
cout << "CStudent()" << endl;
_name = new char[4];
for (int i = 0; i < 4; i++)
{
_name[i] = 0;
}
_num = 0;
_sex = 0;
_grade = 0;
}
CStudent(char *name, int num, int sex, double grade)
{
if (NULL == name)
{
return;
}
_name = new char[strlen(name) + 1];
strncpy_s(_name, strlen(name) + 1, name, strlen(name) + 1);
_num = num;
_sex = sex;
_grade = grade;
}
~CStudent()
{
cout << "~CStudent" << endl;
if (_name != NULL)
{
delete[]_name;
_name = NULL;
}
}
void show()
{
cout << "name: " << _name << endl;
cout << "num: " << _num << endl;
_sex == 1 ? cout << "sex: MAN" << endl
: cout << "sex: WOMAN" << endl;
cout << "grade: " << _grade << endl;
}
};
int main()
{
CStudent stu1;
stu1.show();
CStudent stu2("WangHong", 12, 0, 100.0);
stu2.show();
}