(投稿)同類参照パラメータの私有変数へのアクセスに関する疑問
5650 ワード
#include
<
iostream
>
using
namespace
std;
class
T
{
public
:
T(){a
=
11
;}
int
Get()
const
{
return
a;}
private
:
int
a;
};
class
Test
{
public
:
Test(
int
a):m_a(a){}
Test(
const
Test
&
t){m_a
=
t.m_a;}
//
,
Test
&
operator
=
(
const
Test
&
t)
//
,
{
m_a
=
t.m_a;
}
//
Test(const T &t){m_a = t.a;}
//
, T
Test(
const
T
&
t){m_a
=
t.Get();}
//
void
Print()
const
{
cout
<<
"
m_a:
"
<<
m_a
<<
endl;
}
private
:
int
m_a;
};
次のように解釈されます.
C++の限定子は限定クラスであり,限定オブジェクトではなく,タイプが同じであれば相互にアクセスできる.2つは同じタイプなので直接アクセスできますが、どのオブジェクトかを指定する必要があります.public、privateなどのアクセス権限とは、「クラス」にとって、「オブジェクト」にとってではなく、privateアクセス権は他のクラスではアクセスできません.このクラスの異なるオブジェクトではなく、アクセスできません.実はこれも非常に合理的で、類は自分で設計したので、もちろん自分でも類の内部構造を知っているので、自分に対しても類の“パッケージ”を行う必要はありません.メンバー関数でオブジェクトへのアクセスを許可するデータ・メンバーでは、セキュリティとパッケージングが保証される一方で、便利な操作が提供されます.最初の文の解釈は、メンバー関数のみがプライベートメンバーにアクセスできることを認め、ここでは友元や派生には関与しない.これにより、安全性が保証され、パッケージ作業も完了します.2番目の文について、インタフェースでデータ転送を実現しなければならない場合、操作は極めて不便ではないかと考えてみましょう.メンバー関数で十分なセキュリティとパッケージングが保証されている以上、ここでインタフェースを借りなければならないのは合理的ではありません.データ・メンバーの柔軟な処理として、設計者はメンバー関数でオブジェクトのプライベート・メンバーにアクセスすることを許可し、使用者に大きな便利さを提供します.これは言語の柔軟性と原則性を反映している.
変換元:http://securelvlan.spaces.live.com/Blog/cns!C60FD6EABDDFC877!1102.entry