我见过一类是这样定义一个类..可变大小的类 - C++
class StringChild : public StringBase
{
public:
//some non-virtual functions
static StringChild* CreateMe(int size);
private:
unsigned char iBuf[1];
};
静态工厂函数具有以下实现..
return new(malloc(__builtin_offsetof(StringChild ,iBuf[size]))) StringChild();
所以据我所知,这个函数使用placement new来扩展这个类。
这是安全的只是因为只有1个成员,它被分配在堆上?
我是在假设你无法理会成员的顺序的情况下,我的问题是这只是安全的,因为只有一个成员。 – Dynite 2009-01-09 11:53:33