单选题 有如下程序:#inelude<iostream>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;const A c(a),&d=c,e=b;b=d;return0;}运行后的输出结果是( )。
【正确答案】 B
【答案解析】解析:main()函数中,各个语句执行过程如下: ①A a(2)定义对象a,使用默认构造函数A(int n=0),使用参数2初始化m_n,即a.m_n=2,输出字符'd'; ②Ab定义对象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选项。