静态数据成员(自身类类型)初始化问题

borsyu 2007-10-13 06:22:56
自定义一个类,简化如下:
class A
{
………
public:
A(int other_array[][10]){//通过数组other_array给成员array赋值}
static A a;
public:
int array[10][10];
};
int main()
{
A test;
return 0;
}
请问像这种自身类类型作静态数据成员应该怎么初始化(要对a.array赋值)比较好?有什么需要注意的地方?


另外,如果不调用成员函数,请问如何初始化a,使得能初始化a中的array数组(已知的一百个整数都要赋给它),最好不用构造函数和拷贝构造函数?
我知道在main函数前加上一句"A A::a[10][10];"可以通过编译,然后可以在其它地方对a进行赋值,但不知能不能只在一个地方就可以完成初始化和赋值?
比如可以"A A::a.array[4][4]={{1,4,6,8,9,10,55,24,58,31},{……},……};" //这种赋值方式是错的
这种方式也可以:"A A::a.array[4][4];"后面跟值初始化的语句。
简单点说,也就是初始化和赋值是一条语句或连续的语句,中间没有其它语句。

Thx!
...全文
196 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yshuise 2007-10-14
  • 打赏
  • 举报
回复
static A a;
=============
你这个能行,我就佩服你。
A这个对象根本还没有构成,不知道你怎么行?
Gao_TF 2007-10-14
  • 打赏
  • 举报
回复
这样设计是否有问题?
类的静态成员为该类所有对象所共有,其所共有的内容也为该类的对象,那么这个对象本身也为该类的对象,它是不是也要共有****,有点乱了
设计该类的静态指针会不会好一些!!!
如:
class A
{
………
public:
A(int other_array[][10]){//通过数组other_array给成员array赋值}
static A* a; //此处改为指针
public:
int array[10][10];
};
MPTD_Fire 2007-10-13
  • 打赏
  • 举报
回复
路过
飞哥 2007-10-13
  • 打赏
  • 举报
回复
我想知道一下这么设计有什么好处吗?

可以通过memmove来拷贝
borsyu 2007-10-13
  • 打赏
  • 举报
回复
v_v,“最好不调用构造函数”和“不调用成员函数”是关键
还有其它方法吗?
飞哥 2007-10-13
  • 打赏
  • 举报
回复
不知道为什么搞一个static A a;
这个有什么特别的用途吗?
飞哥 2007-10-13
  • 打赏
  • 举报
回复
int b[10][10];
A A::a(b);
borsyu 2007-10-13
  • 打赏
  • 举报
回复
"A A::a[10][10];"写错了,是"A A::a"

65,187

社区成员

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

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