Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 継承におけるアクセス修飾子 | 継承の概要
C++オブジェクト指向プログラミング

book継承におけるアクセス修飾子

メニューを表示するにはスワイプしてください

アクセス修飾子は、オブジェクト指向プログラミング、特に継承において重要な役割を果たします。これらは、基底クラスのメンバー(属性やメソッド)が派生クラスからどのようにアクセスできるかを決定します。これらの修飾子を理解することは、効果的なクラス設計やデータのカプセル化・整合性の維持に不可欠です。

継承のアクセス種別

クラスは他のクラスから派生することができます。派生クラスは基底クラスからメンバーを継承しますが、これら継承されたメンバーのアクセス可能性は、基底クラスで使用されているアクセス修飾子と継承の種類の両方によって決まります。

Base Class publicBase Class protectedBase Class private
public

Public in Derived Class

Protected in Derived Class

Not Accessible

protected

Protected in Derived Class

Protected in Derived Class

Not Accessible

private

Private in Derived Class

Private in Derived Class

Not Accessible

public.cpp

public.cpp

protected.cpp

protected.cpp

private.cpp

private.cpp

copy
12345
class Derived : public Base { // publicMember is public // protectedMember is protected // privateMember is not accessible };

アクセス制御と継承のまとめ

オブジェクト指向の継承において、基底クラスprivateメンバーは派生クラスからアクセスできず、変更や取得が防止されます。Protectedメンバーはサブクラス内でのみアクセス可能であり、publicメンバーは外部からアクセスできます。以下のコードスニペットでこれを試すことができます。

main.cpp

main.cpp

copy
1234567891011121314151617181920
class Base { public: int publicAttribute; protected: int protectedAttribute; private: int privateAttribute; }; class PublicDerived : public Base {}; class ProtectedDerived : protected Base {}; class PrivateDerived : private Base {}; int main() { PublicDerived obj1; ProtectedDerived obj2; PrivateDerived obj3; }
Note
注意

Protected メンバーは、派生クラスおよびさらに派生したクラス内でアクセス可能であり、privatepublic の要素の中間的な役割を果たす。

**コンストラクタとデストラクタは、派生クラスのオブジェクトに対して自動的に呼び出され、リソースの初期化と解放を確実に行う。**これらの基底クラス要素に直接アクセスするには、コンストラクタとデストラクタを public として宣言する必要がある。

question mark

基底クラスのメンバーが派生クラスからどのようにアクセスできるかを決定する要素は何か?

すべての正しい答えを選択

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  2

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  2
some-alt