|
|
发表于 2005-4-17 01:18:00
|
显示全部楼层
Re:C++中的用new来创建带参对象数组的问题。
C++规定 new 数组的时候一定 调用 默认的构造函数 ...好象是没有办法绕开...
所以我是从默认构造函数的入手的
好象比较多的解决办法是重载 new[]?
class A
{
//----在类里插入如下代码,delete[]的重载没写
static s_m;
public:
static void * operator new[](size_t size)
{ return : perator new(size); }
static void * operator new[](size_t size,int k)
{ s_m = k; return ::operator new(size); }
A(){ m=s_m;}
//-----------------------------------------------------------
private:
int m_b;
public:
A( int b ):m_b(b){}
};
用的时候这么 new(99) A[20]
还使用模版的template<int i> 来做这个事,不过对代码破坏很大.
当然也可以什么都不用,在初始化以前手工 指定A::s_m的值...
不过这些风格都是不正确的,根据前辈的经验,内存使用有一定复杂性的时候就应该内存管理,这个时候使用std的vector或许不错,如果不符合要求也应该自己写内存管理,不然程序写大一点的时候就会杂乱无章,自己都没有心情看下去,我的就是这样.
不知道有没其他非默认构造函数的方法? |
|