class Человек
{
private:
int кошелёк;
public:
void Человек() { кошелёк=3; }
void gч( Человек& ч )
{
ч.кошелёк--; // сейчас работает. а не должно ;)
}
};
class Человек
{
private:
int кошелёк;
public:
void Человек() { кошелёк=3; }
void gч( Человек& ч )
{
ч.кошелёк--; // Работает и должно работать!
}
void gcч( const Человек& ч )
{
ч.кошелёк--; // Не работает, как и должно.
}
};
class Человек
{
private:int кошелёк;
public:
void Человек() { кошелёк=3; } void gч( Человек& ч )
{
ч.кошелёк--; // сейчас работает. а не должно ;)
}
};
同じクラスのインスタンス間で「所有権」を厳密に分離すると、(同じ階層レベルであっても)あらゆる種類の二項演算を記述する際に構文が乱雑になる可能性があるからです。しかし、相続の場合、「直接アクセス」は確実に削られるはずです。
だって、そんなことしても意味ないんだもん・・・。;)
1.の場合、プライベートパーツを入れても何も変わりません。
相続の場合、そうなるのは明らかです。
2.必要なものは少ないが...。根拠は、自分自身のコピーにアクセスする場合のみです。
3.だから、それに決めてもらう。;)
4. 何をもって「正しい操作」とするのか、そこが問題なのです。
1.本当に財布を隠したいのなら、なぜgch()をするのですか?
2.また、インスタンスをコピーする場合、何かあるのでしょうか?
1.本当に財布を隠したいのなら、なぜgh()関数を使うのですか?
2.また、どのような場合にコピーインスタンスが利用できるのでしょうか?
前回の記事を読むすべての答えがそこにある。
かつては、ブカフを節約するために、自分と同じクラスの他のオブジェクト(インスタンス)を「デフォルト」で友人とみなすことが「政治的決定」でした。 そして今、あなたはこの例外を 人生の規範とし、遠縁のすべての人の私腹を自由にこじ開けようとしているのです。
はぁ...
1.の場合、プライベートパーツを入れても何も変わりません。
相続の場合、そうなるのは明らかです。
2.必要なものは少ないが...。は、自分自身のコピーにアクセスする場合のみ根拠となります。
3.だから、決めろよ。;)
4. 具体的に 何をもって「正しい仕事」とするのか、そこが問題なのです。
よし、じゃあ教えてくれ。このようなフィールドをクラス内に定義し、"master "インスタンスのメソッドによってのみ、他の誰にも変更されないようにするにはどうしたらよいでしょうか?
無理なら、カプセル化おっぱいの 話題は言語ではカバーされていないのでは?
よし、じゃあ教えてくれ。このようなフィールドをクラス内に定義し、"master "インスタンスのメソッドによってのみ、他の誰にも変更されないようにするにはどうしたらよいでしょうか?
もし不可能なら、カプセル化されたおっぱいの 話題は、おそらく言語ではカバーされていないのでは?
この機能には、不愉快なほど驚かされます。コンパイラが他人のインスタンスのプライベートフィールドを変更することを許可しているのであれば、それは明らかにでたらめです。servicedeskに投稿されるはずです。
理解できないのは、なぜそんなに自分を制限したがるのか、ということです。
自動的にプログラムの安全性が高まると思っているのか?
そんなことはない!それどころか
いつかそういう書き方をさせるのは、不要な制約です。