継承メソッドとアクセス修飾子の関係
3 つの継承メソッド:
パブリック継承
- プライベート継承
- #保護された継承 #関係: 基本クラスのメンバー関数がプライベートの場合、派生クラスの基本クラスのプライベート メンバーが非表示である場合、他の基準は最終的なアクセスのための小さな選択範囲に制限されます。
保護されたメンバー修飾子: 一部の基本クラス メンバーは、基本クラスのオブジェクトから直接アクセスされることを望まないが、派生クラスでアクセスする必要があるため、保護されたメンバーとして定義されます。保護されたメンバー修飾子は継承のために発生します。
非表示について理解する
非表示とは、派生クラスの関数が同じ名前の基本クラスの関数をブロックすることを意味します。規則は次のとおりです。
- 派生クラスの関数が基本クラスの関数と同じ名前で、パラメーターが異なる場合、この時点では、基本クラスは、virtual キーワードに関係なく非表示になります。
- 派生クラスの関数の名前が基本クラスの関数と同じで、パラメータも同じであるが、基本クラスの関数に virtual キーワードがない場合の場合、基本クラスの関数は非表示になります。
- 派生クラスのデフォルトのメンバー関数
6 つのデフォルトのメンバー関数が派生クラスで明示的に定義されていない場合、コンパイル システムはデフォルトでこれらの 6 つのメンバー関数を合成します。 。
- コンストラクター
- コンストラクターのコピー
- デストラクター
- アドレス演算子のオーバーロード
- const 変更アドレス演算子のオーバーロード
-
#include<iostream> using namespace std; class person{ public: person(const char* name) :_name(name) { cout<<"person()"<<endl; } person(const person& p){ cout<<"person(const person& p)"<<endl; } person& operator=(const person& p){ cout<<"person& operator=(const person& p)"<<endl; if(this!=&p){ _name=p._name; } return *this; } ~person(){ cout<<"~person()"<<endl; } protected: string _name; }; class student:public person{ public: student(const char* name,int num) :person(name) ,_num(num){ cout<<"student()"<<endl; } student(const student& s) :person(s) ,_num(s._num) { cout<<"student(const student& s)"<<endl; } student& operator=(const student& s){ cout<<"student& operator=(const student& p)"<<endl; if(this!=&s){ person::operator=(s);//必须指定域,否则会死循环 _num=s._num; } return *this; } ~student(){//析构的时候先清理子类,再清理父类,不需要显示的调用 cout<<"~student()"<<endl; } private: int _num; }; int main(){ student s1("jack",18); student s2(s1); student s3("rose",16); s1=s3; }
ダイヤモンドの継承
#ダイヤモンドの継承には、あいまいさとデータの冗長性の問題があります。
解決策: 仮想継承
関連記事:
C# 欠落アイテムに関するヒント (4) ):
Qianfeng C言語の基礎ビデオチュートリアル
以上が[C++] 継承の基本知識とアクセス修飾子との関係についての深い理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、CのNull Poernter recerferenceの課題を調査します。問題は、問題はnullではなく、その誤用であると主張しています。 記事では、参照前のチェック、ポインターInitialiなど、非参照を防止するためのベストプラクティスの詳細

この記事では、printf内の\ nエスケープシーケンスを使用してcで新しいライン文字を作成し、関数を置く方法について説明します。 機能を詳しく説明し、出力のラインブレークに使用することを示すコード例を提供します。

この記事は、Cコンパイラの選択に関する初心者を案内しています。 GCCは、使いやすさ、幅広い可用性、広範なリソースが初心者に最適であるため、最適であると主張しています。 ただし、GCC、Clang、MSVC、およびTCCも比較して、その違いを強調しています

この記事では、現代のCプログラミングにおけるNullの継続的な重要性を強調しています。 進歩にもかかわらず、Nullは明示的なポインター管理にとって重要なままであり、有効なメモリアドレスがないことをマークすることにより、セグメンテーションの障害を防ぎます。 最高のPRAC

この記事では、初心者向けのオンラインCコンパイラをレビューし、使いやすさとデバッグ機能に焦点を当てています。 OnlineGDBとRepl.itは、ユーザーフレンドリーなインターフェイスと役立つデバッグツールのために強調表示されます。 プログラムやコンパイルなどのその他のオプション

この記事では、オンラインCプログラミングプラットフォームを比較し、デバッグツール、IDE機能、標準コンプライアンス、メモリ/実行の制限などの機能の違いを強調しています。 「最良の」プラットフォームはユーザーのニーズに依存していると主張しています。

この記事では、C IDEでの効率的なコードコピーについて説明します。 コピーはコンパイラ機能ではなくIDE機能であり、IDE選択ツールの使用、コード折りたたみ、検索/交換、テンプラなど、効率を向上させるための詳細戦略であることを強調しています。

この記事では、Cプログラムのコンパイルでの出力Windowsの欠落をトラブルシューティングします。 実行可能ファイルの実行に失敗し、プログラムエラー、誤ったコンパイラ設定、バックグラウンドプロセス、迅速なプログラム終了などの原因を調べます。ソリューションにはchが含まれます


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール
