首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于对象数组,不快用默认构造函数

2013-07-09 
关于对象数组,不适用默认构造函数我创建了一个了类A,现在想创建个对象数组来存储A的对象,但又不想使用默认

关于对象数组,不适用默认构造函数
我创建了一个了类A,现在想创建个对象数组来存储A的对象,但又不想使用默认的构造函数进行初始化。

class A{
public:
A(int ma):_ma(ma){}
private:
int _ma;
}

//现在想用创建一个10个元素的对象数组,每个元素都用5来初始化。
//A a[10]; //error
//A a[10](5); //error
对象 存储
[解决办法]
这样:
#include <new>

...

  char buf_for_a[sizeof(A) * 10];
  for(int i = 0; i < 10; ++i)
  {
     new (buf_for_a + i * sizeof(A)) A(10);
  }
  A* a = (A*)buf_for_a;


[解决办法]
#include <iostream>
using namespace std;
class A{
public:
A(int ma):_ma(ma){};
void* operator new(size_t size, void* p){return p;}
private:
int _ma;
};

int main(int argc, char *argv[])
{
void *p = operator new[](10*sizeof(A));
A *pa = static_cast<A*>(p);
for(int i=0;i<10;i++) new(pa+i) A(5);

return 0;
}

[解决办法]
改用std::vector,它可以用拷贝构造函数来初始化。
std::vector<A> a(10, A(5));

热点排行