我有狀態類的一個狀態機層次結構:所有類對於空類的單繼承層次結構,sizeof平等是否有保證?
class BaseState
{
public:
virtual ~BaseState {}
template<typename ToCompareWith>
bool in() const
{
return (dynamic_cast<const ToCompareWith*>(this) != 0);
}
};
class SubState : public BaseState {};
class SubSubState : public SubState {};
在我的機器的sizeof返回4。我想知道這是否一致。我知道這不是多重繼承,因爲內存對齊更復雜。我想知道,因爲當轉換到新狀態(當前狀態實例存儲在基類指針中)時,我想使用放置新的(進入舊狀態存儲器位置)。我知道我可以在某處存儲我所有州的靜態圖,但這不是重點。
謝謝你的回答。目前我正在進行顯式刪除和新建,但是我擔心在系統的這個低層部分出現壞分配異常。我會看看無限制的工會。但是,我需要確保MSVC 2010已經支持它。 – Daniel