我正在过去的考试中学习期末考试,并注意到一些我仍然不了解的内容。

class Shape
{
  private:
  int center_x, int center_y;
  public:
  Shape (int x, int y) : center_x(x), center_y(y); {} //constructor initializer
}
class Rectangle : public Shape
{
  private:
  int length, width;
  public:
  Rectangle(): //this is where i have trouble, I am supposed to fill in missing code here
  //but shape does not have a default constructor, what am i supposed to fill in here?
  Rectangle (int x, int y, int l, int w) : Shape(x,y);{length = l; width = w;}
}

谢谢

===============>>#1 票数:5

有两种方法。 您可以在默认构造函数的mem-initializer列表中调用基类construcor,例如使用一些默认值(我将零用作默认值):

Rectangle() : Shape( 0, 0 ), length( 0 ), width( 0 ) {}

或者,您可以将所有工作从默认构造函数委派给带参数的构造函数。

例如

Rectangle() : Rectangle( 0, 0, 0, 0 ) {}

考虑到类定义应以分号结尾。

===============>>#2 票数:1

您问错了问题。 你应该问

默认构造的Rectangle应该是什么?

回答此问题后,将发生以下情况之一:

  • 清楚如何初始化Shape基础
  • 您将意识到Rectangle不应该具有默认构造函数
  • 您将意识到需要重新设计一些东西

===============>>#3 票数:0

您可以假定没有为默认矩形定义坐标。 因此它将是:

Rectangle(): Shape(x,y) , length(0), width(0) { }

  ask by ricefieldboy translate from so

未解决问题?本站智能推荐:

1回复

派生类构造函数调用基类构造函数

我的问题是是否可以将基类构造函数初始化为nullptr ,方法与我在以下derivedClassA 。 该代码按预期工作,但仍然感觉不对。 为了长度起见,我省略了从Tree类派生的其他类,但是这里的想法是,您可以创建一个具有任意数量的派生类的Tree对象,并调用getStringExpr
2回复

在派生类构造函数中使用智能指针

首先是问题:(序言:C ++ oop编程的新知识) 如何构造派生类Widget ,使我在基类方面有一个(shared?)指针向量,在转换和解引用时可以访问原始对象(这样它们仍属于派生类)指针? 说我有一个基类: 还有两个派生类 此外,我有一个多组件(此处仍为通用)
4回复

将指向派生类指针的指针作为构造函数的参数传递给期望指向基类指针的指针

我读了 将指针传递给派生类,传递给希望指向基类的指针的函数? 但答案似乎不适用于我的问题。 我通过Ideone检查以下文件是否可以编译: 但是,我认为与我的实际程序中的场景相同,这会产生错误(当然,关键字已被替换): 我意识到发布显式代码会有所帮助,但是代
3回复

派生类VTable仅具有基类虚函数。 派生类的vtable中缺少派生类虚拟函数

这是一个非常基本的示例: b中的Base的vptr具有Base类的虚函数。 但是,派生的类对象“ d”经过检查仅列出了基的虚函数。 这里的问题不是 ,为什么不覆盖函数,所以这里不需要使用override关键字。 问题是,为什么特定类的VTable不包含其自己的虚函数? 在这种情况
2回复

访问虚函数中的派生类成员变量

所有状态都从BaseState派生,因此它们具有成员变量mVehicle来访问外部类变量。 但是,在每个派生类中,在每个状态的所有函数中,需要static_cast来访问派生类成员变量和函数。 有更好的解决方案吗? 在每个派生类的状态中,添加另一个指针(例如,Converti
2回复

在派生类中调用多个虚函数

我正在为2D游戏引擎创建场景图。 我创建了一个名为Node的基类,该基类由Sprite派生,而Sprite则由Player派生。 每个类都有虚函数update() 。 我想在每个类中调用每个update() 。 我不知道这是否可行(除了使用base::update() ,但是对于许多派生
2回复

更改函数在派生类中的可见性

我正在尝试迫使派生类的人重新实现函数foo(),但仍提出必须显式调用的默认版本。 关键是要避免foo()的默认版本的代码重复,而不要让它“隐式”继承。 常用的方法是制作一个纯虚拟的公共foo(),然后是一个受保护的foo_impl();。 并将foo_impl()调用为foo()重新实
1回复

类“ class”不存在默认构造函数

这个问题已经在这里有了答案: 从虚拟基础派生类,没有默认构造函数(1个答案) 19天前关闭。 我有一组菱形形状
2回复

如何在派生类中重用基类函数

假设我们有这四个类: 二叉树, SplayTree(BinaryTree的子类), BinaryNode和 SplayNode(BinaryNode的子类)。 在BinaryTree类中我有这两个函数,在SplayTree中我想重用第一个函数,因为它的工
3回复

从继承的变量构造派生类

也许标题有点令人困惑所以我会尽我所能确保它尽可能清晰。 基本上,我正在尝试创建一个游戏,其中有一个名为“生物”的抽象基类,并在其下面有几个派生的幻想生物类。 现在我的问题是: 如果我有一个具有受保护变量int strength和int armor的基类,我如何使用int str