私は(完全な参照ハーバートSchildt)によると、派生クラスは友人機能を継承せず、友人機能は 記憶クラス指定子を持たないかもしれません。つまり、静的または外部として宣言することはできません。どうして?友人機能に関する制限
答えて
派生クラスは、フレンド機能を継承しないのですか? […] なぜ?
それはカプセル化を破るので:派生クラスは、もはやそれが効果的にその内部へのアクセス権を持つユーザーを制御することはできませんその友人を制御することができませんでした。
静的または外部として宣言されていない可能性があります。なぜですか?
クラスが効果的にもはやその機能を制御することはできませんのでstatic
は、(それが唯一のクラスに属する機能で理にかなっている、とfriend
sが自由な機能です)意味をなさないだろう、とextern
は再びカプセル化に違反しているためextern
であるため、友達は事実上、クラスには分からない別のコンパイル単位から来る可能性があります。
は、補正のための月の回答を参照してください。そうすることでポイントがあるので
申し訳ありませんが、この回答の2番目の部分は完全に間違っています。 'static'は自由な関数に意味があり(コンパイル単位に対してローカルになります)、キーワード' static'を含まないすべての自由関数宣言は暗黙的に 'extern'を含みます。また、クラスはコンパイル単位に関連付けられていません。友人は効果的に*どんな*編集単位からでも来ることができます、それは "異なっている"かどうかは定義できません。 –
@Janあなたは正しいです。 –
- 継承クラスは、揚げの機能を継承しません:
- フレンド関数自体がその友人それはクラスについて知っているが、それは魔法の新しいサブクラスを学びませんそれで、それはどちらかの友人である必要はありません。
- 親への暗黙的な変換のために派生クラスに機能を使用することも可能です。それは、関数のシグネチャの一部ではないので、関数を指定する必要はないので
- friend宣言は、
static
もextern
を含めることはできません。私は、関数自体の宣言は(クラスの外では)どちらか含めることができると信じています。
- 1. メンバーの機能を友人にする
- 2. 制限機能に関する機能の一致
- 3. C++の友人の変換機能
- 4. MongoDBの友人関係の友人をモデリングする
- 5. 友人、友人、友人の友達などのSQLテーブル
- 6. 新しい機能を友人機能としてオーバーロードしていますか?
- 7. 機能は、私は友人を助けてる2 3のテスト
- 8. Mongodb友人関係を保存する
- 9. 時間制限機能
- 10. Laravel DD機能制限
- 11. 友人機能のアクセス指定子は重要ですか?
- 12. C++親の友人機能を呼び出す方法は?
- 13. Arduinoの機能ポートを制限する
- 14. 友人の友人の数を取得
- 15. rtweetで友人関係を見る/ショー
- 16. オペレータ[]友人機能を使用したオーバーロード
- 17. テンプレートの友人機能と返品タイプの控除
- 18. 友人機能は同じファイル内にある必要がありますか?
- 19. 最も友人と人の友人のリストを返す方法
- 20. グラフ横断:Gremlinを使用して「友人や友人の友人」を質問するには
- 21. 友人データベーステーブルのperformant友人を設計する方法
- 22. Facebook - 友人の友人の数をカウントする
- 23. C++ <<演算子のオーバーロードによる友人機能なし
- 24. CakePHP 3関連の制限が機能しません
- 25. 流暢NHibernateと友人の関係
- 26. オペレータオーバーロードの友人vsメンバ関数C++
- 27. 選択友人
- 28. 友人が
- 29. 2人のユーザが友人
- 30. WebJob QueueTrigger - 機能ごとの制限
は離れて本を投げ、新しいものを購入しています。ハーブSchildtのの本は、その技術的な誤りのために[普遍けなさ](http://www.cs.technion.ac.il/users/yechiel/CS/BadBooksC+C++.html#SchildtAny)です。 –