C++ 将数据从 class A 的对象传递到派生的 class B 的对象

C++ passing data from object of class A to object of derived class B

对于下面的示例代码,我试图将数据从 class A 的对象传递(或属性,如果更适合您的话)到派生的对象 class B。到目前为止我不明白的是如何将数据从父 class 对象传输到派生的 class 对象。

下面的“代码”表达了我是如何尝试做到这一点的。

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();
}