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

回答編集履歴

5

少し誤解を招きそうなので色々修正しました、駄目だボロボロだ・・・

2017/06/08 14:34

投稿

pashango2
pashango2

スコア930

answer CHANGED
@@ -8,5 +8,7 @@
8
8
 
9
9
  > では、積極的にstaticにした方が良いのでしょうか?
10
10
 
11
+ staticメンバとインスタンスに属するメンバは、役割が根本的に違いますので交換可能ではありません。
12
+ すべてのインスタンスで共通の値を持ちたい場合はstaticメンバ、インスタンスごとに個別の値を持ちたい場合は非staticメンバになります。
13
+
11
- staticにして問題がないものであれば、staticにした方がvirtual tableを経由しないので速度的に有利です。
14
+ 微々たるものですが適切にstaticにした方がthisポインタを経由したりスタックに積まないので速度的にもメモリ的にも有利です。
12
- しかし、それも微々たるものなので、設計やわかりやすさを重視した方が良いでしょう。

4

質問の回答

2017/06/08 14:34

投稿

pashango2
pashango2

スコア930

answer CHANGED
@@ -4,4 +4,9 @@
4
4
  > どうしてもstaticに違和感があります。
5
5
 
6
6
  クラスに紐付いた情報をカプセル化したものがstaticメンバ。
7
- そのstaticメンバを扱うための関数がstaticメソッドと考えればスッキリしませんか?
7
+ そのstaticメンバを扱うための関数がstaticメソッドと考えればスッキリしませんか?
8
+
9
+ > では、積極的にstaticにした方が良いのでしょうか?
10
+
11
+ staticにして問題がないものであれば、staticにした方がvirtual tableを経由しないので速度的には有利です。
12
+ しかし、それも微々たるものなので、設計やわかりやすさを重視した方が良いでしょう。

3

単語の抜けを修正

2017/06/08 12:13

投稿

pashango2
pashango2

スコア930

answer CHANGED
@@ -4,4 +4,4 @@
4
4
  > どうしてもstaticに違和感があります。
5
5
 
6
6
  クラスに紐付いた情報をカプセル化したものがstaticメンバ。
7
- そのstaticメンバを扱うためのstaticメソッドと考えればスッキリしませんか?
7
+ そのstaticメンバを扱うための関数がstaticメソッドと考えればスッキリしませんか?

2

違和感について追記

2017/06/08 12:08

投稿

pashango2
pashango2

スコア930

answer CHANGED
@@ -1,2 +1,7 @@
1
1
  オブジェクト指向の最も重要な要素である「カプセル化」の観点から見たら、むしろ`static`はオブジェクト指向的に無くてはならないものだと思います。
2
2
  `static`がなければグローバル変数や手続き型の関数を使わざるを得なくなってしまいます。
3
+
4
+ > どうしてもstaticに違和感があります。
5
+
6
+ クラスに紐付いた情報をカプセル化したものがstaticメンバ。
7
+ そのstaticメンバを扱うためのstaticメソッドと考えればスッキリしませんか?

1

後半は憶測が入っていたので修正

2017/06/08 12:07

投稿

pashango2
pashango2

スコア930

answer CHANGED
@@ -1,5 +1,2 @@
1
- オブジェクト指向の最も重要な要素である「カプセル化」の観点から見たら、むしろ`static`はオブジェクト指向的に無くてはならないものだと思うのでが・・・
1
+ オブジェクト指向の最も重要な要素である「カプセル化」の観点から見たら、むしろ`static`はオブジェクト指向的に無くてはならないものだと思いま
2
2
  `static`がなければグローバル変数や手続き型の関数を使わざるを得なくなってしまいます。
3
-
4
- なお、オブジェクト指向を「現実の物を模倣する設計手法」としているのであれば、それは誤りです。
5
- 純粋に現実の物を模倣したプログラムは地獄以外の何物でもありません。