CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

数组初始化

楼主nnlucky()2006-03-17 17:35:16 在 C/C++ / C++ 语言 提问

能否在定义类时,对数组初始化? 问题点数:20、回复次数:19Top

1 楼healer_kx(甘草(楼主揭贴吧,我们这些上班灌水的也不容易))回复于 2006-03-17 17:42:25 得分 1

可以。  
  int   a[]   =   {1,   2,   3};Top

2 楼pyrophile(豆子(天上云彩往下飘))回复于 2006-03-17 17:43:58 得分 3

可以,如下:  
  #include   <iostream>  
  using   namespace   std;  
   
  class   test  
  {  
  public:  
          test(){  
                  for   (int   i   =   0;   i   <=   9;   i   ++)  
                              {     a[i]   =   0;  
                                  cout   <<   a[i]<<endl;  
                                }  
          };          
          private:  
                  int   a[10];  
  };          
   
  int   main()  
  {  
          test   a;  
          getchar();  
          return   1;  
  }Top

3 楼citywanderer2005(流浪狗)回复于 2006-03-17 17:46:52 得分 1

可以,但是不建议这样做,建议在构造函数中初始化。Top

4 楼nnlucky()回复于 2006-03-17 17:48:45 得分 0

一个运算符重载的函数   我在类内定义了一个数组并给其赋值,但是运行时出错,只好写在类外  
  #include   "stdio.h"  
  //int   days[]={31,28,31,30,31,30,31,31,30,31,30,31};  
  class   date  
  {  
  public:  
  int   days[]={31,28,31,30,31,30,31,31,30,31,30,31};//出错  
  date(int   m=0,int   d=0,int   y=0)  
  {  
  mo=m;  
  da=d;  
  yr=y;  
  }  
  void   display()  
  {  
  printf("%d/%d/%d\n",mo,da,yr);  
  }  
   
  date   operator   +(int   n)  
  {  
  date   dt=*this;  
  n+=dt.da;  
   
  while(n>days[dt.mo-1])  
  {n-=days[dt.mo-1];  
  if(++dt.mo==13)  
  {  
  dt.mo=1;  
  dt.yr++;  
  }  
  }  
  dt.da=n;  
  return   dt;  
  }  
   
  private:  
  int   mo,da,yr;  
  };  
   
  int   main()  
  {  
  date   olddate(2,22,2005);  
  date   newdate;  
  //newdate=olddate+1;  
  newdate=olddate.operator+(56);  
  newdate.display();  
  return   0;  
  }  
  Top

5 楼nnlucky()回复于 2006-03-17 18:13:25 得分 0

test(){  
                  for   (int   i   =   0;   i   <=   9;   i   ++)  
                              {     a[i]   =   0;  
                                  cout   <<   a[i]<<endl;  
                                }  
  这是手动输入,能否用“=”直接赋值?Top

6 楼afeu007(梦里开宝马)回复于 2006-03-17 18:23:22 得分 0

markTop

7 楼nnlucky()回复于 2006-03-17 18:26:27 得分 0

梦里开宝马同志,mark?您不妨给解释一下Top

8 楼zxx110(新)回复于 2006-03-17 20:49:45 得分 1

没搞错吧????  
   
  test(){  
                  for   (int   i   =   0;   i   <=   9;   i   ++)  
                              {     a[i]   =   0;  
                                  cout   <<   a[i]<<endl;  
                                }  
  这是手动输入,能否用“=”直接赋值?  
  ——————————————————  
  这个就是初始化  
  在类里面是不能这样  
  class   class_name  
  {  
  public:  
    class_name(){}  
      ......  
  public:  
  datatype   m_data=...(值);  
   
  };  
  进行初始化的,只能调用成员函数初始化成员变量;(但静态变量不同)  
  Top

9 楼p_zyh(p_zyh)回复于 2006-03-17 21:27:53 得分 5

类的成员通常不能在声明时赋值  
  需要这么写  
  class   date  
  {  
  private:   //   public也行,不过这个没必要暴露吧  
  int   days[12];  
   
  public:  
  date(int   m=0,int   d=0,int   y=0)   :   days((int[]){31,28,31,30,31,30,31,31,30,31,30,31})  
  {  
  mo=m;  
  da=d;  
  yr=y;  
  }  
  }Top

10 楼jixingzhong(瞌睡虫·星辰)回复于 2006-03-17 21:49:04 得分 1

在构造函数中初始化   ...  
   
  不能定义时候初始化Top

11 楼nnlucky()回复于 2006-03-17 22:26:33 得分 0

class   date  
  {  
  private:   int   days[12];  
  public:  
  date(int   m=0,int   d=0,int   y=0)   :   days((int[]){31,28,31,30,31,30,31,31,30,31,30,31})  
  {  
  mo=m;  
  da=d;  
  yr=y;  
  }  
  };  
  出错Top

12 楼zxx110(新)回复于 2006-03-18 09:13:15 得分 2

class   date  
  {  
  private:   int   days[12];  
  public:  
  date(int   m=0,int   d=0,int   y=0)   :   days((int[]){31,28,31,30,31,30,31,31,30,31,30,31})  
  {//数组除了在定义的时候可以进行型如   int   a[]={1,2,3,...}初始化外,其它情况都不能这赋值  
  mo=m;  
  da=d;  
  yr=y;  
  }  
  };  
   
  我想应该是这个错Top

13 楼p_zyh(p_zyh)回复于 2006-03-18 12:45:37 得分 2

gcc   (GCC)   3.2.2   20030222   (Red   Hat   Linux   3.2.2-5)下编译没有问题  
  你用的什么编译器?把具体的错误贴上来吧。Top

14 楼nnlucky()回复于 2006-03-18 14:09:16 得分 0

--Configuration:   vvvv   -   Win32   Debug--------------------  
  Compiling...  
  vvvv.cpp  
  C:\vvvv.cpp(8)   :   error   C2958:   the   left   parenthesis   '('   found   at   'C:\Documents   and   Settings\caining.CN-1904402AFB23\桌面\新建文件夹   (2)\vvvv.cpp(8)'   was   not   matched   correctly  
  C:\vvvv.cpp(8)   :   error   C2059:   syntax   error   :   ')'  
  C:\vvvv.cpp(9)   :   error   C2059:   syntax   error   :   '{'  
  C:\vvvv.cpp(9)   :   error   C2334:   unexpected   token(s)   preceding   '{';   skipping   apparent   function   body  
  C:\vvvv.cpp(42)   :   warning   C4200:   nonstandard   extension   used   :   zero-sized   array   in   struct/union  
  执行   cl.exe   时出错.  
  vvvv.obj   -   1   error(s),   0   warning(s)  
  Top

15 楼p_zyh(p_zyh)回复于 2006-03-18 19:19:19 得分 2

试了一下,果然VC不支持这种语法  
  查msdn只说无法指定数组的显式初始值设定项,也没说怎么解决  
  实际上问题应该在于{},编译器没法正确将其解析为对数组的赋值  
  试过用static   const   int[]也不行,估计是不能这么做了Top

16 楼nnlucky()回复于 2006-03-18 21:33:59 得分 0

谢谢!那只好把数组放在类外初始化了Top

17 楼aniude(重返荣耀)回复于 2006-03-18 22:04:26 得分 1

能否在定义类时,对数组初始化?  
  ---------  
  可以,,,,,如果是字符串数组就简单许多,如果是整数数组就...............我不会写,,,,,,,,,,,Top

18 楼aniude(重返荣耀)回复于 2006-03-18 22:05:06 得分 1

强调,在构造函数中初始化Top

19 楼nnlucky()回复于 2006-03-18 22:26:15 得分 0

你说的很对啊,初始化应该是写在构造函数中,可如何在构造函数中对数组赋值,确实不知道Top

相关问题

  • 数组初始化
  • 数组初始化
  • 数组的初始化
  • 数组(Array)初始化
  • 关于数组初始化
  • 数组初始化缺省
  • 初始化多维数组
  • 怎样初始化数组??
  • 数组初始化问题.
  • 2维数组的初始化问题

关键词

  • date
  • 数组初始化
  • olddate
  • newdate
  • mo
  • dt
  • yr
  • da
  • days
  • test

得分解答快速导航

  • 帖主:nnlucky
  • healer_kx
  • pyrophile
  • citywanderer2005
  • zxx110
  • p_zyh
  • jixingzhong
  • zxx110
  • p_zyh
  • p_zyh
  • aniude
  • aniude

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo