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