ここに書いてあることは「バグの少ないプログラムを書く」ためのものであって,
「実行速度が速いプログラムを書く」ものではありません。
目次
非POD型のメンバ変数は,可能な限りポインタにしない
delete忘れを防ぐため,
可能な限りポインタを所持しない。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
-
|
|
|
|
-
!
|
!
-
|
|
|
|
|
|
-
!
!
-
|
|
|
|
|
|
|
|
|
-
!
|
|
-
|
|
|
!
|
!
| class Angle
{
public:
float rad;
Angle():rad(0)
{
}
}
class Angle3
{
public:
Angle x;
Angle y;
Angle z;
Angle3()
{
}
}
class Angle3_
{
public:
Angle* x;
Angle* y;
Angle* z;
Angle3():
x( new Angle() ),
y( new Angle() ),
z( new Angle() )
{
}
~Angle3()
{
delete x;
delete y;
delete z;
}
}
|
初期化忘れを防ぐため,なるべく非POD型にする
初期化忘れの例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
-
|
|
|
|
|
-
|
!
!
-
|
|
|
|
|
!
| #include <iostream>
struct Vector3
{
float x;
float y;
float z;
void print()
{
std::cout << x << y << z << std::endl;
}
};
void func
{
Vector3 vec;
vec.x = 1;
vec.y = 0;
vec.print();
}
|
もし,Vector3が非Pod型だったら。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
-
|
|
|
|
|
|
-
!
|
|
-
|
!
!
-
|
|
|
|
!
| #include <iostream>
class Vector3
{
public:
float x;
float y;
float z;
Vector3():x(0),y(0),z(0)
{
}
void print()
{
std::cout << x << y << z << std::endl;
}
};
void func
{
Vector3 vec; vec.x = 1;
vec.y = 0;
vec.print();
}
|