当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

C++习题与解析(类和对象)

    题 1.分析以下程序执行的结果
    #include<iostream.h>
    #include<stdlib.h>

    class Sample
    {
    public:
    int x,y;
    Sample(){x=y=0;}
    Sample(int a,int b){x=a;y=b;}
    void disp()
    {
    cout<<"x="<<x<<",y="<<y<<endl;
    }
    };

    void main()
    {
    Sample s1(2,3);
    s1.disp();
    }

    解:本题说明了重载构造函数的定义方法。首先定义了一个类Sample,在main()中定义了它的一个对象,定义s1对象时调用其重载构造函数(x=2,y=3),然后,调用其成员函数输出数据成员。所以输出为:x=2,y=3。
    注意:构造函数是唯一不能被显式调用的成员函数,它在定义类的对象时自动调用,也称为隐式调用。
    --------------------------------------------------------

    题 2.分析以下程序的执行结果
    #include<iostream.h>
    class Sample
    {
    int x,y;
    public:
    Sample(){x=y=0;}
    Sample(int a,int b){x=a;y=b;}
    ~Sample()
    {
    if(x==y)
    cout<<"x=y"<<endl;
    else
    cout<<"x!=y"<<endl;
    }
    void disp()
    {
    cout<<"x="<<x<<",y="<<y<<endl;
    }
    };

    void main()
    {
    Sample s1(2,3);
    s1.disp();
    }

    解:本题说明了析构函数的定义方法。首先定义了一个类Sample,在main()中定义了它的一个对象,定义s1对象时调用其重载构造函数(x=2,y=3),然后,调用其成员函数输出数据成员,最后在退出程序时自动调用析构函数。所以输出为:
    x=2,y=3
    x!=y

    注意:析构函数在对象的作用域结束时被自动隐式调用。

    ----------------------------------------------------

    题 3.分析以下程序的输出结果
    #include<iostream.h>
    class Sample
    {
    int x;
    public:
    Sample(int a)
    {
    x=a;
    cout<<"constrUCting object:x="<<x<<endl;
    }
    };

    void func(int n)
    {
    static Sample obj(n);
    }

    void main()
    {
    func(1);
    func(10);
    }

    解:本题说明静态对象构造函数的调用情况,由于在func()函数中定义的对象obj是静态对象,故只被构造一次,所以输出为:
    counstructing object:x=1

    注意:静态对象和静态变量一样,只被构造一次。块作用域的静态变量,在首次进入到定义该静态对象的函数时,构造该静态对象,以后进入该函数时不再构造静态对象。

 

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接