2017-05-15 1 views
3

に呼び出すことはできません。メソッドを使用するには、暗黙のうちに誰が私にこの質問を説明することができれば、私は思っていたコピーコンストラクタ

暗黙的位置に呼ばれることはありません、次の方法の
class Fruit {...}; 
class Orange : public Fruit {....}; 

を考えると 次のコードのXXX?データメンバのクラスオレンジ内のデータメンバーの

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

A.Orange::Orange()

B.デフォルトコンストラクタは

C.Fruit::Fruit()

D.デフォルトコンストラクタクラスフルー内T

E.C

F.D

設け答えがFあります。

私はこれがコピーコンストラクタであり、そのクラスOrangeは子クラスであり、Fruitは基本クラスであると考えていました。

私は、なぜ答えはだろうわからなかったし、OrangeFruitを持っていないというデータメンバを持っている可能性があるので、それはDである理由があると考えていた、したがって、あなたはそれがデフォルトコンストラクタの使用することはできません。

大変お手伝いをいたします。

+1

非常に良い質問ではありません。 'Fruit'メンバー*のデフォルトのコンストラクタは、XXXの位置だけでなく、' Fruit :: Fruit() 'を呼び出した結果として呼び出されます。 –

+0

@BoPerssonそれは私の講師から与えられたちょうど質問です。私はそれを私の頭の中に入れようと苦労しています –

+0

@ルーシー - 私はその写真から推測しましたが、まだ少し工夫されています。 –

答えて

4

私は、これはコピーコンストラクタであると考えていた...

それはないです。コピーコンストラクタが、同じクラスのインスタンスを受け取り、オレンジのこのコンストラクタは、引数

としての色のインスタンスを取り...そしてそのオレンジ色のクラスは、子クラスであり、果実は基本クラス..です

これは正しいです。

なぜ答えがAになるのかわかりませんでした...

オレンジのコンストラクタが暗黙のうちにオレンジの別のコンストラクタを呼び出すことはないため、Aです。

...オレンジには果物がないデータメンバーがあるため、デフォルトのコンストラクタを使用できないため、Dの理由が考えられました。

私はこの推論が奇妙であることを発見しました。私はオレンジのメンバーがフルーツのメンバーがどのように構築されるかに影響を与える可能性があるとは思わない。

質問の文言はあいまいです。フルーツのメンバーのコンストラクタは、フルーツのコンストラクタ内で呼び出され、フルーツのコンストラクタはマークされた位置にあるため、メンバーの構造も少なくとも間接的になります。だから、DがAに加えて答えであるかどうかは、専門性とその解釈方法によって決まります。

+0

質問は「暗黙のうちに呼び出されることは決してありません」ので、呼び出すことができるかどうかは正解ではありません。これは私の意見で(ほぼ)明確になります。呼び出すことのできるものはすべて、答えとして除外することができます。 –

+0

@ KarstenKoopフェア十分に、私のポストスクリプトは少し意味がありませんでした。 – user2079303

関連する問題