這是一個概念性問題,但我會提供一個特定的實例,我想知道這個。如果我有一個具有多個對象作爲屬性的類,最好在類中靜態分配它們還是在構建時動態分配它們?例如,我有以下類(發出的不必要的代碼)更好地分配堆棧或堆內類
class OutlinedText
{
protected:
sf::Text BaseText;
sf::Text BackgroundText;
}
sf ::文本也是對象。我的問題是,是它更好地讓他們爲上述聲明,並進行初始化如下
OutlinedText::OutlinedText(std::string &text, sf::Color MainColor, sf::Color OffsetColor, sf::Font &font, sf::Vector2f Pos, unsigned int BaseFontSize, unsigned int BackFontSize, float Offset)
{
BaseText = sf::Text(text, font, BaseFontSize);
BaseText.SetColor(MainColor);
BackgroundText = sf::Text(text, font, BackFontSize);
BackgroundText.SetColor(OffsetColor);
}
,或者我應該讓他們爲指針,並與新的分配它們如下:
BaseText = new sf::Text(text, font, BaseFontSize);
BaseText->SetColor(MainColor);
和在析構函數中用delete刪除它們?我知道棧很快分配內存,但我認爲我現在已經雙重初始化了。這是一種情況,還是一種比另一種好?我仍然習慣於C#的做事方式,所以我很好奇C++的正確方法是什麼。如果我有一個基本的誤解,請糾正我。
在此先感謝
在一個側面說明,看看使用初始化列表。 – 2011-04-02 04:04:50