这是一个概念性问题,但我会提供一个特定的实例,我想知道这个。如果我有一个具有多个对象作为属性的类,最好在类中静态分配它们还是在构建时动态分配它们?例如,我有以下类(发出的不必要的代码)更好地分配堆栈或堆内类
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