c++ 初始化类

来源:百度知道 编辑:UC知道 时间:2024/06/08 13:23:09
class myclass{
...
..
myclass(int i, int y)
{
}
}

myclass* class[9];

这class[9]怎么初始化??
可不可以给点详细的代码。。给一个的就可以了

我还是把自己的代码写出来吧。。
class myclass{
...
..
public:
myclass(int i, int y)
{
}
void set(int x, int y)
{
m= x;
n=y;
}
}

myclass* class[9];
for(int i=0 ... 8)
{
class[i]->set(a, d); //用调试器。就是这句有问题。。我想是不是没有初始化。。。如果不是初始化的原因的话就算了。。
}

首先,指出一个小小的错误:不能用class定义数组变量,因为它是个关键字,呵呵!
应该声明为:
myclass* cl[9];或者其他什么的。
其次,要说明一下,myclass* class[9];这条语句是声明了一个myclass指针类型的数组。
只声明的指针,但没有给指针赋值,指针指向的是不可知的错误的地址。所以,你的这个指针数组是不可用的。
必须给指针赋值,才能用。
在这里,我提供一个初始化class[9]的例子,这是动态创建内存的例子,给你参考一下。
for(int i=0;i!=9;i++)
{
class[i]=new myclass(i,i+1);
}
还有一种,就是创建一个myclass,然后给指针数组赋地址。
myclass mc(1,2);
class[0]=&mc;
……
……
不过可能你问的是关于构造函数的东西,呵呵!
还有什么不懂可以百度在线聊哦。
-----------------------------------------------------------------
你myclass对象都没有建立,怎么能调用set函数啊

这个错误很容易发现的,你应该是想把类的数组初始化。你只需要将myclass* class[9];的“*”去掉就行了。加上“*”定义的就是指针数组了。
当然,如果你想用指针数组,那么class[i]->set(a, d); 你不能直接就用了,因为你的指针没有动态分配空间。
可以这样弄:
for(int i=0;i<9;i++)
{
class[i]=new myclass;
class[i]->set(a,d);
}

就是9个myclass对象,每一个都用自己的构造函数初始化。用数组,内存可以连续分配

数组会调用默认构造函数,而不是你写的那个。
每个类都自动生成默认构造函数,是无参的。