查看以下代码:
class A
{
public:
virtual int getN();// have to write it's body, but how?
};
class B : public A
{
private:
int n = 2;
public:
int getN() { return n; }
};
int main()
{
B b;
A *p = &b;
p->getN();
}
通常virtual
函数是一个很好的解决方案。但是,当基类不拥有派生类创建的新属性时,如何从指向基类的指针访问新属性?
答案 0 :(得分:1)
您可以在基础中使用纯虚函数声明,然后您不必为该函数提供正文,尽管您仍然可以。
virtual int getN() = 0;
“获取”函数,如果它们存在,通常应该是const:
virtual int getN() const = 0;
如果这样做,您将无法直接实例化基类。您可以拥有该类型的指针和引用,但绝不会反对。