操作题 1. 使用VC++2010打开考生文件夹下“proj1”文件夹中的工程proj1.sln,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为:
    Constructor,i=0,
    Destructor
    注意:错误的语句在//******error******的下面,修改该语句即可。
    #include<iestream.h>
    class CObj
    {
    int i;
    public:
    CObj ();
    void display();
    ~CObj ();
    };
    //******error******
    CObj:CObj ()
    {
    cout << "Constructor" << ",";
    i=0;
    }
    //******error******
    CObj:display ()
    {
    cout << "i=" << i << ", "<<endl;
    }
    //******error******
    CObj:CObj ()
    {
    cout << "Destructor" << endl;
    }
    void main()
    {
    CObj a;
    a.display();
    }
【正确答案】(1)CObj::CObj()
   (2)void CObj::display()
   (3)CObj::~CObj()
【答案解析】 程序当中定义了类CObj,成员为int型变量i,display函数、构造函数和析构函数,在构造函数中显示“Constructor”,display函数显示成员i的值,析构函数显示“Destructor”,因此程序运行结果就是定义对象,隐式调用构造函数,然后调用display()函数显示i的值,最后清除对象时调用析构函数。
   (1)在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符(::),作用域运算符用来表示某个成员属于哪个类,使用格式为:<类名>::<成员函数>(<参数函数>),因此第1个标识下应改为CObj::CObj(),默认构造函数没有参数。
   (2)第2个标识下“CObj:display()”,从其后的语句看,这是在类外实现CObj函数,因此也有作用域运算符使用错误问题,display()函数返回值为void,因此第2个标识下应改为void CObj::display()。
   (3)第3个标识下“CObj:CObj()”,显然这里是在类外实现折构函数,析构函数是一个特殊的函数,它的名字和类名相同,并在前面加“~”字符,用来与构造函数加以区别,因此第3个标识下应改为CObj::~CObj()。