公の場ではなく保護区での友好宣言に意味はあるのでしょうか?たとえば、次のコードで:
class Shape {
//...
protected:
friend ostream& operator<<(ostream& os, const Shape& s);
virtual void print(ostream& os) const = 0;
};
[形状は抽象的であることに注意してください]
友達と関数宣言を公開するだけでよかったのでしょうか? ありがとう!
公の場ではなく保護区での友好宣言に意味はあるのでしょうか?たとえば、次のコードで:
class Shape {
//...
protected:
friend ostream& operator<<(ostream& os, const Shape& s);
virtual void print(ostream& os) const = 0;
};
[形状は抽象的であることに注意してください]
友達と関数宣言を公開するだけでよかったのでしょうか? ありがとう!
公の場ではなく保護区での友好宣言に意味はあるのでしょうか?
いいえ。フレンド宣言がクラス定義の public、protected、または private セクションのいずれにあるかに関係なく、フレンド クラスには同じレベルのアクセス権があります。 リンク
友達と関数宣言を公開するだけでよかったのでしょうか?
したがって、はい、宣言がクラスのプライベート、パブリック、または保護された部分で見つかったかどうかは問題ではありません。