代码:
#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;
}
运算结果:
学习心得:
在第一个for语句中,p[i]=new MyClass(i),所以调动MyClass的结构函数,输出C0C1C2,同时p[i]->SetValue(p[i]->GetVal()*2);语句调用int GetVal()和void SetValue(int val)函数,让i的值从0,1,2变成0,2,4,第二个for语句,delete p[i],所以按顺序调用析构函数,输出D0D2D4.