第九周项目一 写出程序的运行结果并理解(2)

/*copyright(c)2016.烟台大学计算机学院
 * All rights reserved,
 * 文件名称:text.Cpp
 * 作者:舒文超
 * 完成日期:2016年4月17日
 * 版本号:vc++6.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;
}


运行结果:

         C0C1C2D0D2D4

C0C1C2:在MyClass分配动态内存的时候,执行构造函数,输出“Ci”,同时i也在执行的过程中改变(i=0,i=1,i=2)

D0D2D4:在执行构造函数之后,又执行了SetValue,改变了i的值,(i=0,i=2,i=4),又运行虚构函数。

你可能感兴趣的:(第九周项目一 写出程序的运行结果并理解(2))