c++对象数组用for循环初始化 结果与分析不一致 想不通啊!!
写了一个小代码测试对象数组的初始化 发现结果和分析的不一样 代码如下
# include<iostream>
using namespace std;
class test
{
public:
test(){};
test(char* n){this->number=n;};
char* getnumber(){return number;}
private:
char* number;
};
void main()
{
int i=0;
test *T[20];
for (i=0;i<20;i++)
{
if ((i/2)==0) {T[i]=new test("A");}
else T[i]=new test("b");
}
for (i=0;i<20;i++)
{
cout<<T[i]->getnumber();
}
}
我分析运行结果应该是AbAbAbAbAbAbAbAbAb这样的
但是运行结果是AAbbbbbbbbbbbbbbbbbb 搞不懂是为什么
当对象中的数据是int 时候用i来初始化 输出的是012345678910 不懂为什数字可以 字符串不可以?
[解决办法]
for (i=0;i<20;i++)
{
if ((i/2)==0) {T[i]=new test("A");}
else T[i]=new test("b");
}
有问题!!你这不是取余,可以改为:
(i%2)