c++ - C ++将数据从A类的对象传递给派生类B的对象
问题描述
对于下面的示例代码,我正在尝试将数据从类的对象传递(或属性,如果它更适合您)A
到派生类的对象B
。到目前为止我不明白的是如何将数据从父类对象传输到派生类对象。
下面的“代码”表达了我是如何尝试这样做的。
class Foo {
protected:
string Name, Surname;
public:
void readData()
{
cin >> Name >> Surname >> ;
}
}
class Bar : public Foo {
public:
Bar(Foo a)
{
Name = Name;
Surname = Surname;
}
void printData()
{
//code
}
}
int
main()
{
Foo a;
a.readData();
Bar b(a);
b.printData()
}
解决方案
使您的代码编译的最小更改是使用Foo
复制构造函数并简单地访问继承的成员Bar::printData
:
#include <string>
#include <iostream>
class Foo{
protected:
std::string Name, Surname;
public:
void readData()
{
std::cin >> Name >> Surname;
}
};
class Bar : public Foo
{
public:
Bar (const Foo& a) : Foo(a) { }
void printData()
{
std::cout << Name << " " << Surname;
}
};
int main()
{
Foo a;
a.readData();
Bar b(a);
b.printData();
}
推荐阅读
- html - 如何在忽略标题旁边的图标时居中?
- python-3.x - Python - Tkinter 同时运行两个线程
- r - 通过代码保存 echarts4r 图像(再次)
- php - 将数组与数据库数据进行比较
- r - 如何根据其他两个变量的条件填充新变量
- antlr4 - 如何忽略ANTLR4中的其余语句
- typescript - TypeScript 中具有泛型的默认参数
- azure - Azure Application gateway - trouble shooting?
- javascript - jQuery 插件正在使用 jQuery v3.5.1 的已弃用功能
- azure-pipelines - 使用管道构建时 jcenter 失败(504 超时)