动态数组的初始化问题

lanying 2004-12-17 09:49:42
如何定义一个动态数组,并且全部初始化为指定的构造函数构造的对象
例如:实现这样的效果
size = 10;
A* a = new A[size](1,4); //linux g++编译通过, VC不行

class A {
....
A (int a, int b)
...
}
...全文
1592 44 打赏 收藏 转发到动态 举报
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
minmaxlee 2005-01-01
  • 打赏
  • 举报
回复
强烈建议楼主还是从stl代码中去体会吧,如果你不愿意就这样用stl的话!
比起一个人摸索,学习学习高手的经验方法还是很有好处哦!
umbrella1984 2004-12-31
  • 打赏
  • 举报
回复
C++中能不能在默认构造函数里再调用另外一个构造函数来达到初始化?比如在无参默认构造函数调用有参的A (int a, int b)构造函数?
rwxybh 2004-12-31
  • 打赏
  • 举报
回复
何必呢,std::vector 满足你的任何需求,看看源码,照做一个就可以了
beyondtkl 2004-12-31
  • 打赏
  • 举报
回复
不知道 vc.net支持不。。。
数组功能是比较弱一些
lanying 2004-12-31
  • 打赏
  • 举报
回复
lovefly_fanny()兄,谢谢你的解答,不过你的答案满足不了我的要求,我初始化的时候有可能使用变量的,例如这样:
A *a = new A[size](m, n)
但是这样的语法在GNU的g++下是支持的,但是VC不支持
jyw413 2004-12-29
  • 打赏
  • 举报
回复
up
支持楼上的!!!!
io(王飞) 2004-12-28
  • 打赏
  • 举报
回复
用容器啊,好多人都说了STL嘛。如果你在写C++程序,请让数组成为过去时。
intellifox 2004-12-28
  • 打赏
  • 举报
回复
用STL很容易就解决了
CMyMfc 2004-12-28
  • 打赏
  • 举报
回复
象这样, 最好定义指针数组
const int size = 10;

...

A *a[size];
for(int i = 0; i < size; i++) {
a[i] = new A(1, 4);
}

....

for(int i = 0; i < size; i++) {
delete a[i];
}
...

lovefly_fanny 2004-12-28
  • 打赏
  • 举报
回复
楼主我巴望着你给分呢,
上来CSDN几天了,想享受下升级的感觉 ^_^
我现在还是可怜的新手上路呢 555
lovefly_fanny 2004-12-28
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
const int size=10;
class A {
int a;
int b;
public:
A (int a=1, int b=4){
this->a=a;
this->b=b;
}
} ;
int main(){
A* a = new A[size];
}
lovefly_fanny 2004-12-28
  • 打赏
  • 举报
回复
class A {
....
A (int a=1, int b=4)
...
}
这样A(int a=1,int b=4)就是他的默认构造函数
然后const size = 10;
A* a = new A[size];就可以了,
这时如果你想让初始化数组改变,则只需要
改动上面的默认构造函数就可以了~~
lulurrenr 2004-12-28
  • 打赏
  • 举报
回复
好象创建的时候必须得给出需要创建的 数组的个数吧
zhoory 2004-12-22
  • 打赏
  • 举报
回复
new吧。
sunlu_eric 2004-12-22
  • 打赏
  • 举报
回复
不行,如果是不用默认构造函数,是不可以直接定义类数组的吧!
bonbonice 2004-12-22
  • 打赏
  • 举报
回复
Ps: STL(Standard Template Library) is the best way to implement the dynamic array even it has lots of limitation and bugs.
bonbonice 2004-12-22
  • 打赏
  • 举报
回复
可以用STL来实现,比如用Vector

int size = 10;
vector<A> v1;
for(int i = 0; i < size; i++){
v1.push_back(make_pair(1,4));
}
Flood1984 2004-12-22
  • 打赏
  • 举报
回复
//动态申请二维数组
p = (int**)malloc(row_x * sizeof(int*));
for (i=0; i<row_x; i++)
{
p[i] = (int*)malloc(row_y * sizeof(int));
}

//初始化
for (i=0; i<row_x; i++)
for (j=0; j<row_y; j++)
p[i][j] =0;

//释放二维数组
for (i=0; i<row_x; i++)
{
free(p[i]);
}
free(p);
zhangjinlin218 2004-12-22
  • 打赏
  • 举报
回复
这个问题说的很好!值得学习一下!请给出最终的方案!最好能实现!谢谢
lanying 2004-12-21
  • 打赏
  • 举报
回复
多谢大家的解答,看样子只能重载new了,但是我没有这方面的经验
加载更多回复(24)

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧