初试状态成员

今天写了一道c++primer plus上的题目,自认为有一个比较重要的知识点:状态成员。该成员可以控制对象输出的方向。本题中就可以控制对象转换为英石格式还是磅格式。状态成员是枚举类型。通过下面形式定义:

public:
	enum Mode{yingshi,int_lbs,double_lbs};

之后使用的时候,只需要在你想控制的地方,进行判断

std::ostream & operator<<(std::ostream & os, const Stonewt & m )
{
	if(m.mode==Stonewt::yingshi)
	{
		os << m.stone<<"英石"<<m.pounds<<"磅";
	} 
	else if(m.mode==Stonewt::double_lbs)
	{
		os<<m.pounds<<"磅"; 
	}
	return os;
}

在其他成员函数中,加上一句

mode=Stonewt::double_lbs;

默认以磅形式输出,想要修改形式时,使用set函数

void Stonewt::setmode(Mode mo)
{
	mode=mo;
}

进行修改即可。需要注意的是,状态成员在公有部分,访问的时候需要Stonewt::double_lbs,使用::符号,进行访问。

发布了24 篇原创文章 · 获赞 1 · 访问量 1674

猜你喜欢

转载自blog.csdn.net/lllsy_12138/article/details/88983221