c++ - 在子类构造函数中覆盖父类变量

标签 c++ class inheritance

我正在尝试弄清楚如何更改子类构造函数中的父变量。我现在在构造函数主体中的内容 drawable::bounce = wall::bounce 似乎没有覆盖 drawable::bounce 默认值。执行此操作的正确方法是什么?

可绘制类:

class drawable {
protected:
   window w;
   vector location;
   vector size;
   vector bounce;

墙类构造函数:

wall::wall(window & w, const vector & start, const vector & end, 
int update_interval, const vector& bounce):

rectangle(w, start, end),
filled(false),
update_interval(update_interval),
update_count(0)

{
    drawable::bounce = wall::bounce;
}

最佳答案

drawable::bouncewall::bounce是同一个对象,即成员 bouncedrawable 中找到wall 的基类子对象目的。所以你当前的赋值语句没有做任何事情。

您可能需要以下内容:

this->bounce = bounce;

这设置了 bounce成员等于 bounce范围。注意 bounce , 没有额外的限制,指的是参数,因为参数在最嵌套的范围内。

另一种可能的解决方案是给出 drawable另一个采用 bounce 的构造函数参数,并传递bounce来自 wall构造函数到 drawable构造函数。这样做的好处是 bounce只设置一次,而不是初始化为空然后重新分配。

关于c++ - 在子类构造函数中覆盖父类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50360716/

相关文章:

delphi - 如何访问子类中的函数?

c++ - 对类型 'A *' 的非常量左值引用无法绑定(bind)到不相关类型 'std::shared_ptr<A>' 的值

c++ - 对 operator delete 覆盖的工作方式感到困惑

java - 为什么 Boolean 包装类实现 Serialized 接口(interface)和 Comparable 接口(interface)?它有什么用呢?

c# - 具有可以是两种不同类型之一的属性的类

ios - 如何使用 Xcode 6.3 Beta2 在 Swift 中覆盖 SuperClass 的 setter?

c++ - 使用 Objective-C 获取 Photoshop 的 Action 列表

c++ - 要求派生类提供成员函数模板

python - 如何在Django中访问模型的父抽象类

java - Netbeans 抛出有关 super 构造函数的错误