C++中如何在构造函数中给数组赋值

yueliangshumoon 2010-06-03 11:29:07
各位大虾,请问C++中如何在构造函数中给数组赋值,我用A[4]={1,2,3,4};不行啊,可否给个具体的例子
...全文
2287 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
harkspan 2010-06-04
  • 打赏
  • 举报
回复
memcpy
briggen 2010-06-04
  • 打赏
  • 举报
回复
用void *memset(
void *dest,
int c,
size_t count
);
这个函数可以
具体的用法,和作用查看msdn
庄鱼 2010-06-04
  • 打赏
  • 举报
回复
系统默认的构造能力比论坛里的“牛人”强悍得多!有时候自己写构造函数的目的就是为了屏蔽系统提供的强大功能,防止使用者做出预料外的操作。
lixing01 2010-06-04
  • 打赏
  • 举报
回复
构造函数中可以采用member initializer list初始化列表,在创建的时候就进行初始化,不过没看到数组是否支持以及采用何种书写格式,可以自己测试一下,其他人有知道的么?

要是不行就只能在函数体内老老实实赋值了
庄鱼 2010-06-04
  • 打赏
  • 举报
回复
不要做多余的操作,构造函数当且仅当class或struct存在特别(隐藏的)初始化情况下才需要自己写
saiweng198 2010-06-04
  • 打赏
  • 举报
回复
用memcpy
庄鱼 2010-06-04
  • 打赏
  • 举报
回复
对于定长数组,也可以直接初始化赋值:
#include<iostream>
using namespace std;

class AB{
int a,b;
char *c;
int d[3];
public:
void out(){cout<<"{"<<a<<","<<b<<",\""<<c<<"\",";
outD();
cout<<"}"<<endl;};
void outD();
};

void AB::outD()
{
int s = sizeof (d)/sizeof(d[0]);
cout << "{"<<d[0];
for(int i=1;i<s;++i)cout<<","<<d[i];
cout <<"}";
}
main()
{
AB ab[]={{1,2,"abc",{0,1,2}},{3,4,"dsf",{4,7,8}}};
ab[0].out();
ab[1].out();
return 0;
}
输出:
{1,2,"abc",{0,1,2}}
{3,4,"dsf",{4,7,8}}
庄鱼 2010-06-04
  • 打赏
  • 举报
回复
可以采用默认的构造方式,象struct那样使用,即不覆盖构造函数,如:
#include<iostream>
using namespace std;
class AB{
int a,b;
char *c;
public:
void out(){cout<<"{"<<a<<","<<b<<",\""<<c<<"\"}"<<endl;};
};
main()
{
AB ab[]={{1,2,"abc"},{3,4,"dsf"}};
ab[0].out();
ab[1].out();
return 0;
}
输出:
{1,2,"abc"}
{3,4,"dsf"}
liutengfeigo 2010-06-03
  • 打赏
  • 举报
回复
GARY 2010-06-03
  • 打赏
  • 举报
回复
单个赋值
pengzhixi 2010-06-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 yueliangshumoon 的回复:]
各位大虾,请问C++中如何在构造函数中给数组赋值,我用A[4]={1,2,3,4};不行啊,可否给个具体的例子
[/Quote]
别挣扎了,不可能的,只能一个个赋值了。
小楫轻舟 2010-06-03
  • 打赏
  • 举报
回复
A[4]={1,2,3,4}
这样只能初始化的时候用,

int B[4]={1,2,3,4}; //先初始化一个数组
for(int i = 0; i < 4; i++)
{
A[i] = B[i]; //一个一个赋值
}
healer_kx 2010-06-03
  • 打赏
  • 举报
回复
好像是不可以的,C++暂时还不支持啊。
ruibipiglet 2010-06-03
  • 打赏
  • 举报
回复


for (int i = 0; i < 4; i++)
{
A[i] = i;
}
  • 打赏
  • 举报
回复
目前不支持
在函数体内挨个赋值吧
fanster28_ 2010-06-03
  • 打赏
  • 举报
回复
数组只能在初始化的时候赋值,其他时候得适用循环一个一个赋值
liutengfeigo 2010-06-03
  • 打赏
  • 举报
回复

晕死~
zenny_chen 2010-06-03
  • 打赏
  • 举报
回复
呵呵,楼主可以偷懒,楼上几位所说得那么困难:

class Test
{
public:

int a[10];

};


int main(void)
{
Test t = { {1, 2, 3, 4, 5} };
}
dqdx_zch 2010-06-03
  • 打赏
  • 举报
回复
把数据写在文件里,一个一个往里读
jiangchaomr 2010-06-03
  • 打赏
  • 举报
回复
可以声明为静态的,也可以在构造函数中逐个赋值。
加载更多回复(5)

65,203

社区成员

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

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