2016-05-03 5 views
-3

を回避しない理由を次のように私は2つのクラスがあります。同じ名前の変数を持つサブクラスの場合、なぜ親クラス変数が非表示になるのですか?

この相続が発生した
class parent 
{ 
public: 
    int a; 
}; 

class child: public parent 
{ 
public: 
    int a; 
}; 

、子クラスは親クラスから変数a非表示になりますが、親クラスがまだparent::aとしてスコープ解決演算子を使ってaアクセスすることができます。 parent::aはなぜ避けられないのですか?

誰かが私になぜC++が隠されたときにparent::aを "避ける"ことができないのか教えてください。私は子クラスにparent::aを保存することはメモリの無駄だと思います。

+2

人々は通常意味のある名前を使用する理由があります – Igor

+4

'child'に' parent :: a'が必要ない場合、 'child'は' parent'ではありません。継承を使用しないことを検討してください – KABoissonneault

+0

関数のオーバーライドと呼ばれる関数には意味がありますが、変数には意味がありません。 –

答えて

3

内部スコープ内で同じ名前を宣言でき、他のスコープから同じ名前のアイテムを非表示にすることは一般的なルールです。

クラスの特別な例外はありません。

関連する問題