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();
}
对于下面的示例代码,我试图将数据从 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();
}