我需要通过x = 2000
的对象x
将B
分配给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";
}
};
答案 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;
}
我认为它会对你有所帮助:)。