📄 structure.cpp
字号:
/* 策略模式
*/
#include <iostream>
using namespace std;
class flyBeheviour
{
public:
virtual void fly()=0; //纯虚函数与虚函数
};
class flyble:public flyBeheviour
{
public:
void fly()
{
cout << "I'm flying!"<<endl;
}
};
class unflyble:public flyBeheviour
{
public:
void fly()
{
cout << "I cannot fly!"<<endl;
}
};
class duck //防止实例化?
{
protected:
//virtual duck(); //wrong!
flyBeheviour* f;
public:
void fly()
{
f->fly();
}
void setFlyBeheviour(flyBeheviour& f)
{
delete this->f;
this->f=&f;
}
~duck()
{
delete f;
}
};
class normalDuck:public duck
{
public:
normalDuck()
{
f=new flyble;
}
};
void structure_main()
{
normalDuck nd;
nd.fly();
//nd.setFlyBeheviour(unflyble);
nd.setFlyBeheviour(*(new unflyble));
nd.fly();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -