选择题 22.  有如下程序:
    #include<iostream.h>
    using namespace std;
    class Demo
    {
    public:
      Demo(){  cout<<"default constructor\n";}
      Demo (const Demo &x){  cont<<"copy construc};
      Demo userCode (Demo b){Demo c(b);return c;}
      int main()
      {
      Demo a;d;
      cout<<"calling userCode()\n";
      d=userCode(a);
      return 0;
    }
    执行上面程序的过程中,构造函数Demo()和Demo(const Demo &x)被调用的次数分别是______。
【正确答案】 C
【答案解析】 函数Demo()为构造函数,而Demo(const Demo&x)为复制构造函数。C++在创建一个对象时,会自动调用类的构造函数,所以语句”Demo a.d;”将调用函数Demo()2次。当一个对象作为实参传递给函数时为初始化形参,要调用拷贝构造函数;在函数返回一个对象时调用拷贝构造函数。由此可知语句d=userCode(a);调用拷贝构造函数3次。