C++复习(面向对象1)

构造函数

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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值