- 388 名前:361 [04/09/14 09:53:58]
- >>379
設計の段階でヒープに確保するオブジェクトとスタックに積む オブジェクトは「明確に区別している」ので、同じクラスの インスタンスがヒープに確保されたりスタック積んだりとまちまちに なることはないので、オーバーロードする必要はない。 クラスによってヒープに確保かスタックに積むかが決定している。 ヒープに確保するオブジェクトの例をあげればポリフォーリズムが 必要なクラス、スタックに積むクラスは通貨型やベクトル型、 複素数型、クォーターニオンなど。 C++ではオブジェクトをヒープで確保することを強制できないので とりあえずコピーコンストラクタや代入演算子をprivate属性に するぐらいはやっているが、最終的にはドキュメントに書いている。 Compositeパターンのように子ノードの削除の責任が親ノードにある 場合、delete演算子かスマートポインタで破棄するんですが、 これがスタックにつまれていると親ノードの都合で削除できない ので問題になる。こういうのは仕様できっちりきめるしか 回避方法がないのはC++の欠点だと思っている。 ...というか、こういうガイドラインって一般的ではないのかな。 とりあえずつかいわけとしてはC#の値型と参照型に近い 感じなんですが。
|

|