如何使用指向基类c++的指针在派生类中创建属性
how to get property create in derived class using a pointer to based class c++
查看以下代码:
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;
如果您这样做,您将无法直接实例化基类。您可以拥有该类型的指针和引用,但决不能拥有对象。
相关文章:
- 派生值或附加属性的方法
- 基类需要派生类属性
- C++ 继承:是否必须在派生类中重复父属性?
- 确保派生类具有适当类型的属性
- 继承:派生类的基类属性可访问性
- 基类如何知道其派生类的属性
- 访问派生属性和给定基指针的方法的更简单方法
- boost::serialization-序列化从泛型属性/功能容器派生的类
- C++派生类的设置属性到从同一基类派生的未知类对象
- 适用于具有常见属性但值不同的派生类的设计设置
- 派生类中何时实际需要 "virtual" 属性?
- C++:新的基类,但它可以访问派生类的属性
- 强调派生类的属性
- C++-填充派生类数据成员,同时设置基类属性值
- 转储QObject派生对象的所有属性
- 继承和派生属性在C++中消失
- 如何在C++中从基类访问派生类的属性
- 访问 std::list 中派生类的属性
- 如何使用boost::p ython从派生类中获取所有类属性名称
- 从DLL加载派生类时不包含派生属性