单选题
有如下程序:
#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。