我在理解下面的代码时遇到了问题。我使用Google进行搜索,但找不到答案。
class B
{
//constructor etc
//...some stuff
virtual myinit();
virtual doStuff();
};
class A : public B
{
//constructor etc
//...some stuff
static B * Create()
{
A* demo = new A;
demo->myinit();
demo->doStuff();
return demo;
}
};
我知道当我创建A
时,也会创建B
。但为什么Create()
会返回指向类型B
的指针?
此方法是自动调用的吗?另外,为什么这样static
?
我知道什么是多态和静态意味着..
答案 0 :(得分:0)
静态方法意味着此方法存在于每个类而不是每个对象 - 因此它绑定到类。静态方法Create()是众所周知的模式(Factory Pattern)。
在此方法中,创建指向A的对象,调用并返回方法。
答案 1 :(得分:0)
这些问题涉及C ++的基本概念
1-多态性 2-非成员变量的静态语义。
对于多态,我建议你阅读这里的介绍(http://www.cplusplus.com/doc/tutorial/polymorphism/)
对于static,您必须知道可以在不实例化类的情况下使用静态成员函数。
答案 2 :(得分:0)
why does Create() return a pointer to a type B?
您可以安全地将派生类的指针转换为其基类的指针。
为什么函数执行此操作,您需要询问编写它的人。
Is this method called automatically?
没有
why is it static in this way?
这样你就可以在没有类对象的情况下调用函数。如果尚未存在A并且“创建”不是静态的,那么您将无法使用“创建”功能创建任何A。