📄 hour22_2.cpp
字号:
// Listing 22.1
#include <iostream>
class Condition
{
public:
Condition() { }
virtual ~Condition() {}
virtual void Log() = 0;
};
class Normal : public Condition
{
public:
Normal() { Log(); }
virtual ~Normal() { std::cout << "Normal Destructor\n"; }
virtual void Log()
{ std::cout << "Logging normal conditions...\n"; }
};
class Error : public Condition
{
public:
Error() {Log();}
virtual ~Error() { std::cout << "Error Destructor\n"; }
virtual void Log() { std::cout << "Logging error!\n"; }
};
class Alarm : public Condition
{
public:
Alarm ();
virtual ~Alarm() { std::cout << "Alarm Destructor\n"; }
virtual void Warn() { std::cout << "Warning!\n"; }
virtual void Log() { std::cout << "General Alarm log\n"; }
virtual void Call() = 0;
};
Alarm::Alarm()
{
Log();
Warn();
}
class FireAlarm : public Alarm
{
public:
FireAlarm(){Log();};
virtual ~FireAlarm() { std::cout << "FireAlarm Destructor\n"; }
virtual void Call() { std::cout<< "Calling Fire Dept.!\n"; }
virtual void Log() { std::cout << "Logging fire call.\n"; }
};
int main()
{
int input;
int okay = 1;
Condition * pCondition;
while (okay)
{
std::cout << "(0)Quit (1)Normal (2)Fire: ";
std::cin >> input;
okay = input;
switch (input)
{
case 0:
break;
case 1:
pCondition = new Normal;
delete pCondition;
break;
case 2:
pCondition = new FireAlarm;
delete pCondition;
break;
default:
pCondition = new Error;
delete pCondition;
okay = 0;
break;
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -