- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好吧,这个例子对于我试图理解的概念来说非常简单明了。我将向您展示代码:
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'
....
}
我的问题是这样的。我想引用已创建的基类实例创建派生类的实例,因此当我通过派生实例更改基类的任何成员变量时,我可以按照上面演示的方式看到先前创建的基实例的变化。
注意:我希望您能理解我的意思,因为我知道我的术语可能有点不对劲。请不要苛刻:)
注意:我不会展示/编写构造函数,因为我不确定最好的方法是什么,如果存在并且语法可能不正确的话。
最佳答案
这似乎说明了问题:
Base* base = new Base("Base Class");
Derived* derived = new Derived(base, 453.21);
因为通常没有必要单独构造 Base
类。您的派生类将已经隐式包含一个 Base
实例,您不必手动添加指向一个实例的指针并从构造函数中设置它。我不知道你的 ctor 长什么样,但它应该看起来像这样:
Derived(const std::string& name, double p) : Base(name), price( p ) {}
如果这足以让您自己修复它,那很好,否则请发布所有您示例的代码。而不是我上面引用的代码中的两行,它应该看起来更像:
Derived* derived = new Derived("Base Class", 453.21);
如果您发布Derived
的代码,这对我们来说应该是显而易见的,并且在您的具体示例中向您解释它会容易得多。
关于c++ - 内存共享;遗产;基础和派生实例; C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15708284/
我的应用程序上有一个登录系统,其中有一组预定义的用户,如下所示: User user = new User("tommy", "tommy", false); User user2 = new Use
我厌倦了以下问题。请帮忙?我有一个下面的界面 /** * Type of Timestamp. For ex: Date, long, Calendar etc * */ public interf
这里没有问题,只需要解释它是如何工作的。 我正在为我的 C# 类(class)做家庭作业,我设法按照教授提供的代码示例自行完成。问题是我不明白它是如何工作的。以下是让我感到困惑的事情: 首先,为什么我
class C1 { void A(); void B(); } void C1::A(){ return B(); } class C2 : public C1 { void
我有一组代码,它模拟了一个基本的图书馆编目系统。有一个名为 items 的基类,其中定义了通用 id、title 和 year 变量以及其他 3 个派生类(DVD、Book 和 CD)。 基础[元素]
似乎无法弄清楚这一点。我一直收到各种错误,所以我只用我从 Jackson 那里收到的当前错误来写这篇文章。 public class ResponseDetail { private Resp
我希望继承一些 D 类遗产并实现接口(interface) A、B 和 C 的所有属性和方法。请帮我举一个 Delphi 中的示例。 我用德尔福 Xe7 一个类如何实现多个接口(interface)?
看看我的问题: 我有一个如下所示的类: var els=[]; var base = function(){ this.config = {} } var X1 = function(){ }
我正在学习如何编写好的 Makefile。我必须编写几个 gcc 编译命令,这些命令会生成使用不同选项编译的不同文件。我读过有关 .SECONDEXPANSION 的内容,但它不太令我满意,因为它看起
我有很多不同的课程。但是,它们都可以保证具有某些方法,例如render()和Activate()。 我的目标是能够将它们全部存储在一个大列表中。目前,我有一个名为Container的大类,并且我做了类
让我们有一个 C++ 对象 A。A 中有两个变量(VAR1 和 VAR2)可供其子对象访问。对象 B 扩展了 A 并有一个私有(private)变量 VAR3,它还可以访问 VAR1 和 VAR2。
例如,我创建了一个鸟类类,我正在尝试创建一个 boolean 变量,它开始时不快乐,当它飞行时变为快乐,当它尝试游泳时又变回不快乐。 这是我的鸟类 public class Bird extends
我也有一个关于如何在两个类之间创建复制构造函数的问题。 > person(const person& a) : name(a.getName()), address(a.getAddress()),
好吧,这个例子对于我试图理解的概念来说非常简单明了。我将向您展示代码: class Base { protected: string name; public: virtual str
首先,我不太确定如何为我的问题命名。 我有一个关于继承的问题。 假设我创建了一个名为 Class_A 的类: class Class_A { public: int a;
我一直在谷歌上搜索和阅读相关内容,但还没有找到答案,也许有人可以帮我解决这个问题。 我希望我的 UserPile 类能够从我的 CardPile 类访问数据成员和类成员函数。我不断收到标题中提到的错误
假设我在一个类中有一些数据结构如下 class DataStructure { DataStructure(); ~DataStructure(); void reset();
我是一名优秀的程序员,十分优秀!