C++ Logo
C++二级在线二级在线
首页选择题程序题成为会员帮助其他科目

灯光开关

请修改编辑器中的代码,完成以下功能:程序中定义了一个基类 Switchable,表示具有开和关两种状态的设备;一个派生类 Lamp,表示灯;以及一个类 Button,用于控制设备的开关状态。在主函数中,创建了一个 Lamp 对象和一个 Button 对象,Button 用于控制 Lamp 的状态。每次按下 Button 时,Lamp 和 Button 的状态都会同时改变。 请在代码中的 //**********found********** 标记处填写适当的代码,完成以下功能: 1. 实现 Switchable 类中的 isOn 方法,用于返回设备当前的开关状态。 2. 将 Switchable 类的 getDeviceName 方法定义为纯虚函数。 3. 在 Button 类中正确初始化 device 成员变量。 4. 实现 Button 类的 push 方法,使其能够根据当前状态切换设备的开关状态。 程序不需要输入,运行后会输出设备和按钮的状态变化。 输出示例: 灯的状态:关 按钮的状态:关 灯的状态:开 按钮的状态:开

#include<iostream>
using namespace std;

class Switchable{	//具有开、关两种状态的设备
	bool is_on;		//为 ture 表示“开”,为 false 表示“关”
public:
	Switchable(): is_on(false){}
	void switchOn(){ is_on=true; }	//置为“开”状态
	void switchOff(){ is_on=false; }//置为“关”状态
	//**********found**********
	bool isOn(){ _______________ }	//返回设备状态
	//**********found**********
	virtual const char *getDeviceName()_______;   //返回设备名称的纯虚函数
};

class Lamp: public Switchable{
public:
	//返回设备名称,用于覆盖基类中的纯虚函数
	const char *getDeviceName(){ return "Lamp"; }
};

class Button{		//按钮
	Switchable *device;	//按钮控制的设备
public:
	//**********found**********
	Button(Switchable &dev):____________{}	//用参数变量的地址初始化device
	bool isOn(){ return device->isOn(); }	//按钮状态
	void push(){							//按一下按钮改变状态
		//**********found**********
		if(isOn()) _________________;
		else  device->switchOn();
	}
};

int main(){
	Lamp lamp;
	Button button(lamp);
	cout<<"灯的状态:"<<(lamp.isOn()? "开" : "关")<<endl;
	cout<<"按钮的状态:"<<(button.isOn()? "开" : "关")<<endl;

	button.push(); //按一下按钮

	cout<<"灯的状态:"<<(lamp.isOn()? "开" : "关")<<endl;
	cout<<"按钮的状态:"<<(button.isOn()? "开" : "关")<<endl;

	return 0;
}

控制台

调试终端

准备就绪