有如下程序: #include class A { public: A(int n=0):m_n(n) { std::cout

admin2017-02-18  20

问题 有如下程序:
    #include
    class A
    {
    public:
    A(int n=0):m_n(n)
    {
    std::cout<<’d’;
    }
    A(const A&a):m_n(a.m_n)
    {
    std::cout<<’c’:
    }
    private:
    int m_n;
    };
    int main()
    {
    A a(2),b;
    eonst A c(a),&d=c,e=b;
    b=d;
    return 0;
    }
    运行后的输出结果是(    )。

选项 A、ddcd
B、ddce
C、ddccd
D、dddce

答案B

解析 main()函数中,各个语句执行过程如下:①A a(2)定义对象a,使用默认构造函数A(intn=0),使用参数2初始化m_n,即a.m_n=2,输出字符’d’;②A b定义对象b,使用默认构造函数A(int n=0),使用默认参数0初始化m_n,即b.m_n=0,输出字符’d’;③const A c(a)定义对象c,使用A类的另一个构造函数A(const A&a),将c.m_n赋值为a.m_n,即c.m_n=2,输出字符’c’;④const A&d=c定义对象d引用c对象,所以d、c是同一对象,没有构造函数的调用;⑤const A e=b定义对象e,使用编译器的默认赋值运算符将b对象赋值给一个临时对象,然后使用构造函数A(const A&a)将临时对象赋给e,输出字符’c’;⑥b=d使用编译器的默认赋值运算符将d对象赋给b,没有构造函数的调用。
    综上,程序运行结果为:ddcc。故本题答案为B选项。
转载请注明原文地址:https://kaotiyun.com/show/CIAp777K
0

最新回复(0)