有如下程序: #include #include using namespace std; class Bedroom{ public: Bedroom(int s=12):size(s){cout

admin2017-02-18  55

问题 有如下程序:
    #include
    #include
    using namespace std;
    class Bedroom{
    public:
    Bedroom(int s=12):size(s){cout<    private:
    int size;
    };
    class Apartment{
    public:
    Apartment(int s1,int s2,int s3):b2(s2),b1(s1),size(s3){cout<    private:
    int size;
    Bedroom b1,b2;
    };
    int main(){
    Apartment*p=new Apartment(12,18,75);
    delete p;
    return 0;
    }
    运行时的输出结果是(    )。

选项 A、121875
B、181275
C、751218
D、751812

答案A

解析 C++的构造函数初始化列表中,成员被初始化的次序就是定义成员的次序。main()函数中,使用new运算符构造Apartment类的对象,将构造的对象指针赋给p指针;在构造Apartment对象时,由于Apartment.类的成员定义顺序为:size、b1、b2,Apartment对象的构造过程为:①初始化列表中首先初始化size为s3(75)。②初始化bl,调用Bedroom构造函数,使用参数s1(12),初始化b1对象中的size,然后执行Bedroom构造函数的函数体,输出b1.size(12)。③最后初始化b2,调用Bedroom构造函数,使用参数s2(18),初始化b2对象中的size,再执行函数体,输出b2.size(18)。④等Apartment对象的初始化列表执行结束后,再执行Apartment类的构造函数体,输出Apartment对象中的size(75)。
    综上程序输出:121875。本题答案为A选项。
转载请注明原文地址:https://kaotiyun.com/show/5IAp777K
0

最新回复(0)