wlbk.net
当前位置:首页 >> C++在构造函数中初始化动态数组,我定义了一个类里... >>

C++在构造函数中初始化动态数组,我定义了一个类里...

你在构造函数中声明了这么个数组double a[32]={0};也就是说此处的a把类中原有的a给隐藏了,类似于全局变量和局部变量的关系一样.你初始化的是这里新定义的a,而不是类的成员a;你把double a[32]={0};这句删掉就行了

monthday[13]={0,31,29,31,30,31,30,31,31,30,31,30,31}; 这样的写法只能在定义数组时使用,你已经定义好了数组,你在这样写“monthday[13]“就变成一个数组里面的元素了,而不代表数组,而且还是越界的元素..汗.你写 monthday[13] = 1;会编译成功,但是运行会出错.因为他是越界的..汗.即使你在main函数里先定义一个数组,在这样赋值..那都是错误的,不可能是对的.你只能白数组元素一个一个的赋值了,不能这样写了

char *p=new char[m]; 记得delete[] p; 如果是int也是一样的

定义double **d;//动态开辟空间 d[n][m] int n=5,m=4; d=new double*[n]; for(int i=0;i<n;i++) { d[i]=new double[m]; }

有两种方法,一种是使用初始化列表,一种是C++11提供的类内初始化.初始化的参数通常为列表,即数组的列表初始化,对于char数组还可以用字符串字面值作为初始化的参数.数组通常使用列表进行初始化,如果列表元素小于数组大小,则

class p{ string department; string name; int num; int situ1[13]; int situ2[13]; int situ3[13]; int situ4[13]; int situ5[13]; int situ6[13]; int situ7[13]; public:p(){ char *b=(char*)this; for(int i=0;i b[i]=0; } } };

把代码晒出来看看呀,应该不是分配空间的问题,如果你定义了数组的话,系统会自动帮你在栈空间分配内存的

可以的啊 但是你必须有默认的构造函数

datarr.a=0; datarr.b=0; datarr.str="right"; datarr.stra="ok"; 或者struct Data datarr = {0, 0, "right", "ok"};再看看别人怎么说的.

你这个初始化时对的,都在构造函数里面初始化变量.card **deck = new card* [52]; 你这个[]前面为啥要有*个呢?这个是为deck分配一块card的内存空间,这个构造函数被调用来分布内存,是通过调用其地址实现的.

网站首页 | 网站地图
All rights reserved Powered by www.wlbk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com