質問: 0; static int pust;//静的記憶域期間 void pri(int x); static void pri_st(int x); }; ```
回答: まず、friend関数とfriendクラスの違いは関数とクラスの違いだけです。 ところで、当初の質問内容はfriendの意味だったと思うのですが、それも一般的な回答は検索で見つかると思います。 さて、大昔の自分もfriendの利用シーンがなかなか思いつかなかったのですが現在は下に述べる部分で使用しています。 (1)friend関数の利用シーン OSないしシステム側がコールバック関数(C言語の関数)を要求する場合に、直接クラスメンバ関数を渡せないのでfriend関数に橋渡しをしてもらう場合等に使ってます。 (2)friendクラスの利用シーン 非公開のコンストラクタ(デストラクタ)しか持たないクラスAが、Aの配列クラス等に生殺与奪を任せたい場合等に使ってます。派生させればどこでも構築できてしまう場合もありますが、それをやってはいけませんという意味を表現しているつもりです。 以上、具体的な事例もなんらかの役にたつかもしれませんので経験上の一例をあげてみました。