我有班级Prince
和Frog
(两者都是State
的孩子(这是虚拟的),并且声明的方法略有不同welcome()
和sayGoodbye()
< / p>
我唯一的问题是为什么State* m_state
不公开? (它是默认的吗? - 这意味着什么?)代码是100%好的,但在老师给我们提供有关设计模式的材料之前,我从未见过这样的声明。
Monster.h
class Monster{
State* m_state;
public:
Monster();
void kiss();
void welcome();
void sayGoodbye();
~Monster();
};
Monster.cpp
Monster::Monster(){
m_state = new Frog();
}
void Monster::kiss(){
delete m_state;
m_state = new Prince();
}
void Monster::welcome(){
m_state->welcome();
}
void Monster::sayGoodbye(){
m_state->sayGoodbye();
}
Monster::~Monster(){
delete m_state;
}
答案 0 :(得分:1)
是公共的,默认情况下是class和private,因此m_state是私有的(类中定义的对象是私有的,除非已经创建了另一个保护语句)
class Monster{
State* m_state;
public:
Monster();
void kiss();
void welcome();
void sayGoodbye();
~Monster();
};
与
相同class Monster{
private:
State* m_state;
public:
Monster();
void kiss();
void welcome();
void sayGoodbye();
~Monster();
};
,而
struct Monster{
State* m_state;
public:
Monster();
void kiss();
void welcome();
void sayGoodbye();
~Monster();
};
在这个结构中m_state是public