C++ day8 成员属性设为私有,两个案例(成员函数)

1.成员属性设为私有

好处:1.将所有成员属性设置为私有,可以控制读写权限

2.对于写权限,可以监测数据的有效性

class person
{
public:
	//设置姓名
	void setname(string name)  //行为函数创建一个变量接收数据
	{
		m_name = name;
	}
	//获取姓名
	string getname()
	{
		return m_name;
	}                    //这样姓名就有了可读可写的权限
	//输入年龄
	void setage(int age)
	{
		if (age < 0 || age > 120)
		{
			cout << "有误" << endl;
			return;   //如果输入年龄超限制,退出
		}
		m_age = age;
	}
	//获取年龄
	int getage()
	{
		return m_age;
	}
	//输入玩具名称
	void settoy(string toy)
	{
		m_toy = toy;
	}

private://三个属性都是私有的。再在公共中设置权限接口
	string m_name;		//可读可写
	int m_age;			//只读
	string m_toy;		//只写
};    

int main()    //类外
{
	person p;
	p.setname("李怡礼");    //设置名字
	p.settoy("盖塔");
	p.setage(1118);
	cout << p.getname() << endl;   //记得加括号
	cout << p.getage() << endl;
	system("pause");              
	return 0;   
}

2.设计立方体

求立方体面积,体积

重点:分别用全局函数和成员函数判断两个立方体是否相等

自己的垃圾代码

class cube
{
public:
	void setdata(int len, int wid, int hig)
	{
		m_len = len;
		m_wid = wid;
		m_hig = hig;
	}

	void setdata2(int len, int wid, int hig)
	{
		m_len2 = len;
		m_wid2 = wid;
		m_hig2 = hig;
	}
	int volume()   //体积
	{
		int vol = m_len * m_wid *m_hig;
		return vol;
	}

	int area()    //面积
	{
		int area = 2 * m_len*m_wid + 2 * m_wid *m_hig + 2 * m_hig *m_len;
		return area;
	}

	void justice()    //判断
	{
		if (m_len == m_len2)
		{
			if (m_wid == m_wid2)
			{
				if (m_hig == m_hig2)
				{
					cout << "相等" << endl;
				}
			}
		}
	}

private:          //这里不应该设置两种,属性就应该只有长宽高
	int m_len;
	int m_wid;
	int m_hig;
	int m_len2;
	int m_wid2;
	int m_hig2;
};    

int main()    //类外
{
	cube c;
	c.setdata(1, 2, 3);
	c.setdata2(1, 2, 3);
	cout << "体积" << c.volume() << endl;
	cout << "面积" << c.area() << endl;
	c.justice();
	system("pause");              
	return 0;   
}

老师d代码(成员函数判断是重点)

class cube
{
public:
	
	//设置
	void setlenth(int len) //这里分开写长宽高是为了以后好修改
	{
		m_len = len;
	}

	void setwidth(int wid)
	{
		m_wid = wid;
	}

	void sethigh(int hig)
	{
		m_hig = hig;
	}

	//读取
	int getlenth()
	{
		return m_len;
	}

	int getwidth()
	{
		return m_wid;
	}

	int gethigh()
	{
		return m_hig;
	}

	int volume()   //体积
	{
		return m_len * m_wid *m_hig;   //直接返回即可,不用设置变量
	}

	int area()    //面积
	{	
		return  2 * m_len*m_wid + 2 * m_wid *m_hig + 2 * m_hig *m_len;
	}
	//成员函数作判断
	bool issamebyclass(cube &c) //因为这里是类内,所以已经有一整套立方体属性,可以直接使用,所以只用传输
						//一个外面的立方体就行,调用以后起别名为c
	{
		if (getlenth() == c.getlenth() && getwidth() == c.getwidth() && gethigh() == c.gethigh())
		//这里也可以把getlenth()替换成m_len,因为是类内,可直接调用
		{
			{
				return true;
			}
			return false;
		}
	}				
private:         
	int m_len;
	int m_wid;
	int m_hig;	
};    

//全局
bool issame(cube &c1, cube &c2)   //这里如果不加&,是值传递,等于这个函数还要拷贝出一个数据
					//如果加了&,就是引用。这里的c1是c1的别名,c1直接用那段内存上的值,不用再拷贝
{
	if (c1.getlenth() == c2.getlenth() && c1.getwidth() == c2.getwidth() && c1.gethigh() == c2.gethigh())
		//注意set是写入,这里比较要用读,get
	{	
		return true;		
	}
	return false;            //bool返回1或0
}


int main()    //类外
{
	cube c1;
	c1.setlenth(10);
	c1.setwidth(10);
	c1.sethigh(10);
	cout << "体积" << c1.volume() << endl;
	cout << "面积" << c1.area() << endl;
	cube c2;//创建第二个立方体
	c2.setlenth(10);
	c2.setwidth(10);
	c2.sethigh(100);
	int ret = issame(c1, c2);
	//全局判断
	if (ret == 1)
	{
		cout << "相等" << endl;
	}
	else
	{
		cout << "不相等" << endl;
	}
	//成员函数判断
	int rets = c1.issamebyclass(c2); //c1调用这个判断函数,c1是已知的,所以只用传c2进去作比较即可
	if (rets == 1)
	{
		cout << "相等" << endl;
	}
	else
	{
		cout << "不相等" << endl;
	}
	system("pause");              
	return 0;   
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值