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

how to get property create in derived class using a pointer to based class c++

本文关键字:派生 属性 创建 指针 何使用 基类 c++      更新时间:2023-10-16

查看以下代码:

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();
}

通常CCD_ 1函数是一个很好的解决方案。但是,当基类不拥有派生类创建的新属性时,如何从基类的指针访问新属性?

您可以在基中使用纯虚拟函数声明,然后不必为函数提供主体,尽管您仍然可以。

virtual int getN() = 0;

"Get"函数,如果它们存在的话,通常应该是const:

virtual int getN() const = 0;

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