好的,这个例子对于我想要理解的概念来说非常简单。我只会给你看代码:
class Base
{
protected:
string name;
public:
virtual string getName() const { return this->name; }
virtual void setName(string name) { this->name = name; }
....
}
class Derived : public Base
{
private:
double price;
....
}
main(int argc, char** argv)
{
Base* base = new Base("Base Class");
Derived* derived = new Derived(base, 453.21);
derived->setName("Name changed!");
cout << "Name of instance: " << base->getName() << endl;
// Desired effect
Output: 'Name changed!'
// Actual effect
Output: 'Base Class'
....
}
对我来说问题是这样的。我想参考已经创建的基类实例创建派生类的实例,所以当我通过派生实例更改基类的任何成员变量时,我可以按照上面演示的方式看到先前创建的基实例的更改。
注意:我希望你能理解我的意思,因为我知道我的术语可能有点不对劲。请不要苛刻。:)
注意:我不会显示/编写构造函数,因为我不确定执行此操作的最佳方法是什么,即使存在并且语法可能不正确。