04/09/14 10:15:27
>>388
> 設計の段階でヒープに確保するオブジェクトとスタックに積む
> オブジェクトは「明確に区別している」ので、同じクラスの
クラスを使う側のローカルな操作なら自分の決定を前提とできるだろうけど、
クラスや関連関数を提供する側では、どちらに確保されるかと言う前提は持てないだろう。
> ヒープに確保するオブジェクトの例をあげればポリフォーリズムが
"polymorphism" な。
> C++ではオブジェクトをヒープで確保することを強制できないので
コンストラクタを protected にして、ヒープに確保するstaticな
生成関数を用意すればできるよ。
> これがスタックにつまれていると親ノードの都合で削除できない
> ので問題になる。こういうのは仕様できっちりきめるしか
> 回避方法がないのはC++の欠点だと思っている。
他の言語なら仕様でキッチリ決めないで回避できるの?
> ...というか、こういうガイドラインって一般的ではないのかな。
> とりあえずつかいわけとしてはC#の値型と参照型に近い
C#は詳しくないけど、それを表したいなら、
C#:値型 → C++:メンバを並べたクラス型
C#:参照型 → C++:実装へのスマートポインタひとつをメンバに持つクラス型
こんな感じの対応付けにならないか?