回答編集履歴

5

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

2017/06/08 14:34

投稿

pashango2
pashango2

スコア930

test CHANGED
@@ -18,6 +18,10 @@
18
18
 
19
19
 
20
20
 
21
- staticにして問題ないものであれば、staticした方がvirtual tableを経由しないので速度的に有利です
21
+ staticメンバとインスタンス属するメンバは、役割根本的ますので交換可能でありません
22
22
 
23
+ すべてのインスタンスで共通の値を持ちたい場合はstaticメンバ、インスタンスごとに個別の値を持ちたい場合は非staticメンバになります。
24
+
25
+
26
+
23
- しかし、それも微々たるものなので、設計やわかりやすさを重視した方がいでしょう
27
+ 微々たるものですが適切にstaticにした方がthisポインタを経由したりスタックに積まな速度的にもメモリ的にも有利です

4

質問の回答

2017/06/08 14:34

投稿

pashango2
pashango2

スコア930

test CHANGED
@@ -11,3 +11,13 @@
11
11
  クラスに紐付いた情報をカプセル化したものがstaticメンバ。
12
12
 
13
13
  そのstaticメンバを扱うための関数がstaticメソッドと考えればスッキリしませんか?
14
+
15
+
16
+
17
+ > では、積極的にstaticにした方が良いのでしょうか?
18
+
19
+
20
+
21
+ staticにして問題がないものであれば、staticにした方がvirtual tableを経由しないので速度的には有利です。
22
+
23
+ しかし、それも微々たるものなので、設計やわかりやすさを重視した方が良いでしょう。

3

単語の抜けを修正

2017/06/08 12:13

投稿

pashango2
pashango2

スコア930

test CHANGED
@@ -10,4 +10,4 @@
10
10
 
11
11
  クラスに紐付いた情報をカプセル化したものがstaticメンバ。
12
12
 
13
- そのstaticメンバを扱うためのstaticメソッドと考えればスッキリしませんか?
13
+ そのstaticメンバを扱うための関数がstaticメソッドと考えればスッキリしませんか?

2

違和感について追記

2017/06/08 12:08

投稿

pashango2
pashango2

スコア930

test CHANGED
@@ -3,3 +3,11 @@
3
3
  `static`がなければグローバル変数や手続き型の関数を使わざるを得なくなってしまいます。
4
4
 
5
5
 
6
+
7
+ > どうしてもstaticに違和感があります。
8
+
9
+
10
+
11
+ クラスに紐付いた情報をカプセル化したものがstaticメンバ。
12
+
13
+ そのstaticメンバを扱うためのstaticメソッドと考えればスッキリしませんか?

1

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

2017/06/08 12:07

投稿

pashango2
pashango2

スコア930

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