繁体   English   中英

您无法在复制构造函数中隐式调用的方法

[英]Methods you cannot implicitly call in a copy constructor

我想知道是否有人能向我解释这个问题:

特定

 class Fruit {...}; class Orange : public Fruit {....}; 

在以下代码中,从未在位置XXX隐式调用以下哪种方法?

 Orange::Orange(const Colour &colour) XXX {...} 

A. Orange::Orange()

B.类Orange中数据成员的默认构造函数

C. Fruit::Fruit()

D.类fruit中数据成员的默认构造函数

E. AC.

F. AD.

提供的答案是F.

我认为这是一个复制构造函数,而类Orange是一个子类,而Fruit是一个基类。

我不确定为什么答案是A ,并且认为它是D的原因是因为Orange可能拥有Fruit没有的数据成员,因此你不能使用它的默认构造函数。

任何帮助都将受到大力赞赏。

我以为这是一个复制构造函数......

它不是。 复制构造函数接受同一个类的实例,Orange的这个构造函数将Color的一个实例作为参数

......那个橙色的班级是一个儿童班,水果是一个基类。

这是对的。

我不确定为什么答案是A ......

它是A,因为Orange的构造函数从不隐式调用Orange的另一个构造函数。

...并且认为它是D的原因是因为橙色可能有水果没有的数据成员因此你不能使用它的默认构造函数。

我觉得这个推理很奇怪。 我不知道Orange的成员如何影响Fruit的成员是如何构建的。

问题的措辞含糊不清。 Fruit成员的构造函数在Fruit的构造函数中被调用,并且由于Fruit的构造函数位于标记位置,因此其成员的构造也是如此 - 至少是间接构造。 因此,除了A之外,D是否是答案取决于技术性以及您如何解释问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM