有如下程序 #include using namespace std; class AA{ char c; public: AA():c(’X’){ } AA(c

admin2021-06-10  25

问题 有如下程序
     #include
     using namespace std;
     class AA{
         char c;
     public:
         AA():c(’X’){ }
         AA(char ch):c(ch){ }
         AA(AA &aa):c(aa.c){ }
         ~AA(){ cout<<3; }
         char value()const{ return c; }
     };
     void f1(AA a){ cout<     void f2(AA &a){ cout<     int main(){
         f1(AA(’Y’));
         f2(AA());
         return 0;
     }
运行这个程序的输出是

选项 A、X3Y3
B、XY33
C、Y3X3
D、YX33

答案C

解析 main函数中,调用f1函数,创建局部对象AA(’Y’),此时形参a就是AA(’Y’)对象,输出a.value(),即"Y",f1函数执行完之后,需要销毁AA(’Y’)对象,调用AA类的析构函数~AA(),输出"3";接着程序调用f2函数,f2函数创建局部对象的引用a并初始化指向AA(),此时引用a所指对象的成员c值为"X",输出为"X",f2函数执行完之后,需要销毁a所指对象AA(),调用AA类的析构函数~AA(),输出"3",程序结束;运行结果为:"Y3X3",答案为C。
转载请注明原文地址:https://jikaoti.com/ti/QQh0FFFM
0

最新回复(0)