フレンド関数になれるのは....について

解決


くろのすけ  2006-11-18 07:21:43  No: 63633  IP: 192.*.*.*

(メンバ関数との違いについての説明で)
『フレンド関数になれるのは、クラス外で定義される通常の非メンバ関数か、別のクラスのメンバ関数です。』(※)
クラスの中で定義されることもあると思うんですが、
これってどういうことでしょう?

※明解C++(柴田望洋/著)にそう書かれていました。

編集 削除
επιστημη  2006-11-18 07:55:24  No: 63634  IP: 192.*.*.*

class foo {
private:
  int n;
  friend void print(const foo& f) { cout << f.n; } // [*]
};

こんなやつのことかしら?
関数 print はクラスの中で定義されてはいますけど、
クラスのメンバではありません。だから意味的には"外"です。

↓これをinline定義したのだから。

class foo {
private:
  int n;
  friend void print(const foo& f);
};

void print(const foo& f) { cout << f.n; }

編集 削除
くろのすけ  2006-11-19 17:25:47  No: 63635  IP: 192.*.*.*

ありがとうございます。
そういうことですか。分かりました。

編集 削除