No.1ベストアンサー
- 回答日時:
classにおけるprivate等のことですね。
隠蔽とは即ち隠すことです。
何処から?
classの外部からです。
classにおけるアクセス指定子には「private:」「protected:」「public:」の三種類があります。
このうちpublicは外部からのアクセスを全て許可する指定になりますから、構造体におけるメンバーと同様に外部からアクセスすることが出来ます。
次にprivateですが、基本的に外部からのアクセスをシャットアウトします。
つまり、この指定を受けたメンバーデータ(あるいはメンバー関数)は内部からのみのアクセスを許可します。
勿論、データからデータへのアクセスというのはありませんから、この場合同じclass内のメンバー関数からアクセスされることになります。
このようにすることによって、そのクラスで定義された、決まった手続き(class内のメンバー関数)のみを通してメンバーデータに変更を与える様に制限することが出来るのです。
即ち、これをデータの隠蔽と呼びます。
そして、最後に残ったprotectedについてですが、これもprivateに準じます。
最大の違いは、同じclass内のみではなく、そのclassの派生クラスにもアクセスが許可されている点です。
人間に例えてみましょう。(この場合自分=class)
public・・・どんな人が触っても良いもの
private・・・自分のみが触って良いもの
private・・・自分以外に、子供や孫も触って良いもの
と言った感じです。
例えで説明されるのを嫌う向きもあるようですので、その場合後半は無視なさって下さい。
No.2
- 回答日時:
すみません、前回の誤りの訂正と補足です。
まずは訂正から。
人間に例えて、の三番目はprotectedです。
失礼しました。
次に補足ですが、データの隠蔽による効能が説明不足でした。
先程も書きましたが、privateやprotectedを指定した場合、指定されたメンバーデータやメンバー関数にアクセスするものは、同じclassやそのclassの派生classのメンバー関数に限定されます。
これによって、予想しない変数の取り扱いを防ぐことが出来るのです。
例えば、100を超える値を設定をしてはいけないメンバーデータに対して101や200といった値を設定されることを確実に防ぐことが出来るのです。
これが構造体のメンバーやpublicで指定されたメンバーデータであったらどうでしょうか。
外部のどんな関数や式で使用されるか判りませんから、その結果誤った値が設定されることもあり得るわけです。
これが隠蔽による効能です。
それともう一つ補足を。
classを定義する際に何れのアクセス指定も受けていない部分はprivate扱いとなります。
これは、classのデフォルトの属性がprivateだからです。
(ちなみにclass内では、アクセス指定子が表記された部分から次のアクセス指定子が表記されるまでが、そのアクセス指定を受けた範囲になります。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Replace関数について教えて...
-
CSSが全く分かりません、お助け...
-
プログラミング 素数か素数では...
-
c言語の問題の説明、各所ごとに
-
DLLファイルの逆コンパイラにつ...
-
逆コンパイルと逆アセンブルの...
-
C言語について。
-
C#でログファイルにファイルパ...
-
終端記号、非終端記号とは
-
VisualStudioでC++クラスを追加...
-
int16_t の _t は何?
-
Cのオブジェクトファイルの逆ア...
-
C言語の関数のextern宣言
-
DNCL(共テ用プログラミング言語...
-
C#でTreeViewのCheckBoxのサイ...
-
CPUが16bitでも32bitOSでコンパ...
-
C言語 列挙型(enum型)変数について
-
コマンドプロンプトについて。
-
visual studioでフォームデザイ...
-
Windows Formアプリからコンソ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
What class are you in? には何...
-
class roomとclassroom どちら...
-
pythonのerrorコード
-
HSTLやSSTL等のI/Oピン
-
テンプレートの特殊化でコンパ...
-
クラス名やモジュール名の競合...
-
プログラミングRubyについての...
-
syntax error 一行で書くと
-
Visualurubyのラジオボタンにつ...
-
【delphi】クラスの継承、互換...
-
【ruby】【文法】スパークラス...
-
【ruby】クラスCGIを改造して、...
-
【ruby】特異クラスを使って,Fi...
-
変数の隠蔽とは?
-
Rubyの質問です
-
Rubyの正規表現を引数に
-
No route matches [GET] "/post...
-
住所の追加について
-
「arg」は何の略?
-
教えてください。vb5.0
おすすめ情報