单选题 有如下程序: #include using namespace std; class AA{ public: AA(){ cout<<1; } AA(AA &a){ cout<<2; } }; void f1(AA a){} void f2(AA &a){} int main(){ AA aa; f1(aa); f2(aa); return 0; } 运行这个程序的输出是
【正确答案】 B
【答案解析】解析:main函数中,首先创建AA类的对象aa,使用默认构造函数初始化aa,输出"1";将aa作为实参传入函数f1,由于f1形参是a是局部对象,需要调用复制构造函数,用aa初始化a,输出"2";最后将aa作为实参传入函数f2,由于f2形参是AA类的引用a,a将直接引用aa,不需要调用构造函数,所以程序输出结果为:"12";答案为B。