问题及代码:
/*
*Copyright (c) 2014,烟台大学计算机学院
*All rights reserved.
*文件名称:lily.cpp
*作者:李莉
*完成日期:2014年4月8日
版本号:v1.0
*
*/
#include <iostream>
using namespace std;
class MyClass
{
public:
MyClass(int x=0):i(x)
{
cout<<"C"<<i;
}
~MyClass()
{
cout<<"D"<<i;
}
void SetValue(int val)
{
i=val;
}
int GetVal()
{
return i;
}
private:
int i;
};
int main()
{
MyClass *p[3];
int i;
for (i=0; i<3; i++)
{
p[i]=new MyClass(i);
p[i]->SetValue(p[i]->GetVal()*2);
}
for (i=0; i<3; i++)
delete p[i];
cout<<endl;
return 0;
}
运行结果:
自我理解:
在定义的对象中,是定义的数组对象,而且对象的输入是按照循环的,于是会依次调用构造函数,而且会输出相应的C0C1C2等,同时有一点是,其余的成员函数无输出,但是有一点是,每次执行过其他的成员函数后,i的值会变成原来的两倍,于是输出的结果只有之前的,然后跳出循环后,又按照循环依次析构,此时i的值已经是之前的两倍了,因此数出的是D0D2D4