ホームページ > バックエンド開発 > C++ > C++ フレンド関数の詳細な説明: プライベート メンバーにアクセスする場合のフレンド関数の制限は何ですか?

C++ フレンド関数の詳細な説明: プライベート メンバーにアクセスする場合のフレンド関数の制限は何ですか?

PHPz
リリース: 2024-04-29 12:15:01
オリジナル
327 人が閲覧しました

フレンド関数はプライベート メンバーにアクセスできますが、制限されています。現在のクラスのプライベート メンバーにのみアクセスでき (継承されたクラスにはアクセスできません)、それらを直接変更することはできません。実際の戦闘では、フレンド関数は、Student クラスのプライベート メンバー名にアクセスしたり、生徒の情報を出力したりするなど、参照またはポインターを介してプライベート メンバーにアクセスできます。

C++ 友元函数详解:友元函数在访问私有成员时的限制?

C フレンド機能の詳しい説明:非公開メンバーへのアクセス制限

フレンド機能とは?

フレンド関数は、どのクラスにも属さない関数ですが、クラス内で宣言されたすべてのメンバー (プライベート メンバーを含む) にアクセスできます。フレンド機能により、異なるクラス間の緊密な対話が可能になり、カプセル化されたクラスを柔軟に使用できるようになります。

フレンド関数がプライベート メンバーにアクセスする場合の制限

フレンド関数がプライベート メンバーにアクセスする場合、いくつかの制限があります:

  • フレンド関数のみアクセス可能現在のクラスのプライベート メンバーにはアクセスできますが、継承されたクラスのプライベート メンバーにはアクセスできません。
  • フレンド関数はプライベート メンバーを直接変更できません。

実際的なケース

プライベート メンバー name とパブリックメンバーgetAge()。フレンド関数 printStudentInfo() を作成して、プライベート メンバー name にアクセスし、学生情報を出力します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:cpp;toolbar:false;'>class Student { private: string name; public: int getAge(); // 声明友元函数 friend void printStudentInfo(const Student&amp; student); }; void printStudentInfo(const Student&amp; student) { // 可以访问私有成员 cout &lt;&lt; &quot;Name: &quot; &lt;&lt; student.name &lt;&lt; endl; // 不能修改私有成员 // student.name = &quot;John Doe&quot;; // 错误 } int main() { Student student1; student1.setName(&quot;Jane Doe&quot;); printStudentInfo(student1); return 0; }</pre><div class="contentsignin">ログイン後にコピー</div></div>

出力:

Name: Jane Doe
ログイン後にコピー
この例では、フレンド関数

printStudentInfo()

はプライベート メンバー name## にアクセスできます。 # ですが、変更することはできません。さらに、フレンド関数は参照またはポインタを介してのみクラス メンバーにアクセスでき、オブジェクト メンバーを直接使用できないことに注意してください。

以上がC++ フレンド関数の詳細な説明: プライベート メンバーにアクセスする場合のフレンド関数の制限は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート