ここに書いてあることは「バグの少ないプログラムを書く」ためのものであって,
「実行速度が速いプログラムを書く」ものではありません。
目次
#contents
* 非POD型のメンバ変数は,可能な限りポインタにしない [#ra03fd43]
delete忘れを防ぐため,
可能な限りポインタを所持しない。
#code(c,){{
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型にする [#abdbf38a]
初期化忘れの例
#code(c,){{
#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();
// vec.zの初期化を忘れてる!
}
}}
もし,Vector3が非Pod型だったら。
#code(c,){{
#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.zはここで初期化されている。
vec.x = 1;
vec.y = 0;
vec.print();
}
}}