teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コードでの補足を受けた追記

2016/12/18 08:41

投稿

maisumakun
maisumakun

スコア146663

answer CHANGED
@@ -6,4 +6,8 @@
6
6
 
7
7
  これは確実に何かの**勘違い**です。なにせ、インスタンスが存在しなければ、**ものが存在しない以上**パブリックメンバへすらアクセスすることはできません。
8
8
 
9
- ということで、前提段階で誤解だらけなので、まずはそのあたりの再確認からしていただければ幸いです。
9
+ ということで、前提段階で誤解だらけなので、まずはそのあたりの再確認からしていただければ幸いです。
10
+
11
+ (2016/12/18 17:38 追記)
12
+
13
+ C++の場合、`new`せずともオブジェクトが自動で生成して、参照を付け替えることもできない、というのは(他のオブジェクト指向言語にないので)逆に混乱するかもしれません。自分の場合、C++からオブジェクト指向に入ったために、JavaScript、Ruby、Javaなどで「オブジェクト型がすべて参照」ということに慣れなくて苦労した思い出はあります。

1

誤読していたので修正

2016/12/18 08:41

投稿

maisumakun
maisumakun

スコア146663

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  > クラスのprivateメンバを直接、そのクラスのインスタンスから変更したり取得したりすることが可能です。
2
2
 
3
- これは、`friend`指定する」「メバを指すポインタ経由でアクセするといった、通常ルートない方法での読み書きの話でしょうか。それはあくまで**例外的な**もあって、常用きではありません。
3
+ そのイスタンスのインメソッドから」であれば、それはある意味**当然の機能**です(「どこから読み書ききない変数」なんて、存在しても全く無意味で)。ただ、「同じクラスの別なインスタンスの変数を動かせる」というのは言語によって異なってます(Rubyでは、普通の方法では同じインスタンスのメンバ変数にしかアクセスできません
4
4
 
5
5
  > クラス型の変数をインスタンス化せずにそのprivateメンバにアクセスすること自体はできます。
6
6