【发布时间】:2021-12-01 18:43:54
【问题描述】:
对于下面的示例代码,我正在尝试将来自类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()
}
【问题讨论】:
-
Name = Name;是“noop”,你是说Name = a.Name;吗? -
和更好的
Bar (Foo a) : Foo(std::move(a)) {}。 -
嘿@Jarod42,为什么不一直到
Bar (const Foo &a) : Foo(a) {}? -
@Jarod42 我已经尝试过使用 a.Name,但它对我说`它不能通过“A”指针或对象访问
-
@ypnos:可能,但在某些情况下会做额外的副本(而不是在所有情况下都额外移动)(在提供一个足够好的重载或几个重载之间也有权衡)。跨度>
标签: c++ class inheritance