如何使用基于类c ++的指针在派生类中创建属性

时间:2015-11-21 17:04:42

标签: c++ inheritance

查看以下代码:

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函数是一个很好的解决方案。但是,当基类不拥有派生类创建的新属性时,如何从指向基类的指针访问新属性?

1 个答案:

答案 0 :(得分:1)

您可以在基础中使用纯虚函数声明,然后您不必为该函数提供正文,尽管您仍然可以。

virtual int getN() = 0;

“获取”函数,如果它们存在,通常应该是const:

virtual int getN() const = 0;

如果这样做,您将无法直接实例化基类。您可以拥有该类型的指针和引用,但绝不会反对。