C++ 使用派生类方法更改基类数据成员

C++ Use derived class method to change base class data member

本文关键字:基类 数据成员 类方法 派生 C++      更新时间:2023-10-16

我很难弄清楚如何使用派生类方法访问和更改基类数据成员。 以下代码是我想执行的操作的示例。

class A
{
protected:
string name;
public:
A():name("Name 1"){}
void DisplayA()
{
cout<<name<<endl;
}
};
class B : public A
{
public:
void Change()
{
cout<<"Enter New Name: ";
getline(cin,name);
}
void DisplayB()
{
cout<<name<<endl;
}
};
main()
{
A Obj1;
B Obj2;
Obj1.DisplayA();
Obj2.Change();   // I want this method to change the name in Base class too.
Obj2.DisplayB(); 
Obj1.DisplayA(); // This method should now display the new name that we set in Change();
}

必须将 name 定义为static std::string,因为修改对象的非静态成员只会更改该对象的非静态成员。