gpt4 book ai didi

c++ - 从基类方法使用派生类数据成员

转载 作者:行者123 更新时间:2023-11-30 01:02:23 25 4
gpt4 key购买 nike

所以我一直在尝试使用基类的派生类数据成员,但我不知道该怎么做。我看到了一种方法,当我调用基类方法时,只需在参数中传递我需要的成员,但我只是在想应该有另一种方法来做到这一点。所以我将其复制如下。

#include<iostream>
using namespace std;
class B;
class A{
public:
display(){
cout<<cord<<endl;
}
int cord = 25;
};

class B : public A{
public:
B(){
A a;
a.display();
}
int cord = 30;
};

class C : public A{
public:
C(){
A a;
a.display();
}
int cord = 35;
};

int main(){
B b;
C c;
B.display();

}

上面的代码输出为

25
25
25

我想要它给出的是

30
35
30

我们将不胜感激任何实现此目的的方式,无论哪种方式更好,如果您想添加一些内容或在评论中提出任何问题,我会立即执行。

最佳答案

像这样定义一个虚拟的getter

virtual int getCord() const { return cord; }

在每个类中并在显示中调用它

void display(){ cout << getCord() <<endl; }

在B和C的构造函数中你也需要替换

A a;
a.display();

就在

display();

否则您不可能访问在 A 的实例上显式调用 display 的子类的值


using derived class data members from base class method

这是因为我允许在 B 和 C 中重新定义 cord,但我不建议您在“真实”代码中进行这种重新定义;-)

关于c++ - 从基类方法使用派生类数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56148591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com