2009-02-28 5 views
14

は、私がBaseクラスがあるとします。友人関係はC++で継承されていますか?

class Base { 
    friend SomeOtherClass; 
}; 

そしてBaseから継承する別の(異なる)クラスがあります:

class AnotherClass : public Base {} 

は友情が同様に継承されますか?原則として

+0

コンパイラを使用して簡単に回答できるはずのもう1つの質問です。 – shoosh

+8

@shoosh:コンパイラは必ずしも標準に準拠しているとは限りません。そのような質問は、コンパイラではなく標準によって回答されるべきです。 –

+0

@shooshどのコンパイラ? VS for Windowsまたはg ++ for unix?どのバージョンのC++標準ですか?コンパイラが動作する場合でも動作しなくても、多くの質問をすることができます。 – user3728501

答えて

19

、派生クラスは除いて、基本クラスのすべてのメンバーを継承:いいえ、そう

* its constructor and its destructor 
* its operator=() members 
* its friends 

。友人は継承されません。ここに記載されているよう

+5

あなたは、このウェブサイトのように正確な言葉遣いを選んだのは興味深いです:http://www.cplusplus.com/doc/tutorial/inheritance/ – dicroce

+0

おそらく今質問するべき良い質問は、友情が継承されるようにすることができます?私が "友情"を持ちたいすべてのクラスのリストを書くのではなく、私がやっていることに確かに役立つだろう。 – user3728501

7

ありませんそれは、ありません:http://www.parashift.com/c++-faq-lite/friends.html#faq-14.4

+0

リンクの例は、OPの質問とは反対のケースを示しています。 'SomeOtherClass'が' AnotherClass'のオブジェクトに継承された 'Base'フィールドとメソッドにアクセスできるようにしたいと付け加えたいと思います。 –

9

んが、それはないではありません。

編集:は、セクション11.4/8

友情を継承でもない

も 推移、C++標準から引用します。

関連する問題