10/05/09 18:45:47
会社のC++書式の再現なんですが
「一時オブジェクトの寿命は実装依存で、hoge(&Vec3D(1,2,3))の引数の一時オブジェクトはhoge関数から戻る前に破棄されることもあるので、
このような書き方はしてはいけない。」
とあったのですが、本当でしょうか? なんか怪しげな気がするのです。
class Vec3D{
public:
Vec3D( float x_, float y_, float z_ ) : x(x_), y(y_), z(z_) {}
float x,y,z;
};
void hoge(Vec3D* v)
{
printf("%f,%f,%f\n", v->x, v->y, v->z);
}
void Test()
{
//駄目
hoge(&Vec3D(1,2,3));
//OK
Vec3D v(1,2,3);
hoge(&v);
}