如何使用基类对象设置派生类变量的值?

时间:2017-04-18 14:09:43

标签: c++

我需要通过x = 2000的对象xB分配给a A

这里B是派生类,即继承了A类。

 class A
{
public:
    int x, y;
    void print()
    {
        cout<<endl<<"print() of A";
    }
    virtual void display()
    {
        cout<<endl<<"display() of A";
    }
};
class B: public A
{
public:
    int x, z;
    void display()
    {
        cout<<endl<<"display() of B";
    }
    void print()
    {
        cout<<endl<<"print() of B";
    }
};

3 个答案:

答案 0 :(得分:1)

通过执行以下操作找到答案:

((B *)aptr)->x = 2000;

答案 1 :(得分:0)

在C ++中,多态性是通过虚函数实现的。如果需要通过指针或对其基类型的引用来更改派生类中的某些内容,则需要一个虚函数。 (嗯,从技术上讲,你不会;你可以转换为衍生类型,但这是对设计失败的承认)。

答案 2 :(得分:0)

可以通过在基类中创建虚函数来实现,该函数调用派生类的函数进行初始化。

#include<iostream>
#include<stdio.h>

using namespace std;

 class A
{
public:
    int x, y;
    void print()
    {
        cout<<endl<<"print() of A";
    }
    virtual void display()
    {
        cout<<endl<<"display() of A";
    }

    virtual void setX(int a)
    {

    }
};
class B: public A
{
public:
    int x, z;
    void display()
    {
        cout<<endl<<"display() of B";
    }

    void print()
    {
        cout<<endl<<"print() of B";
    }

    void setX(int a)
    {
        x=a;
    }
};


int main()
{
    A *ptr;
    B b;
    ptr=&b;
    ptr->setX(2000); ///using pointer object of class A 
    cout<<b.x;


}

我认为它会对你有所帮助:)。