有如下程序: include using namespace std; class Demo { public:有如下程序: #include<iostream.h> using namespace std; class Demo { public: Demo(){ cout<<"default constructor\n";} Demo(const Demo &X){ cont<<"copy constructor\n";} }; Demo userCode (Demo b){Demo c(b);ret

题目
有如下程序: include using namespace std; class Demo { public:

有如下程序: #include<iostream.h> using namespace std; class Demo { public: Demo(){ cout<<"default constructor\n";} Demo(const Demo &X){ cont<<"copy constructor\n";} }; 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)被调用的次数分别是( )。

A.1和1

B.1和2

C.2和3

D.2和4


相似考题
更多“有如下程序: #include<iostream.h> using namespace std; class Demo { public: ”相关问题
  • 第1题:

    有如下程序:include using namespace std;class Base{public:Base(){ cout<<"BB";

    有如下程序: #include <iostream.h> using namespace std; class Base { public: Base(){ cout<<"BB"; f(); } voidf(){cout <<"Bf"; } }; class Derived: public Base { public: Derived (){cout<<"DD";} void f(){cout<<"Df";} }; int main(){Derived d; return 0;} 执行上面的程序将输出

    A.BBBfDD

    B.BBDfDDDf

    C.DD

    D.DDBBBf


    正确答案:A
    解析:本题考核类的继承与派生知识。派生类构造函数执行的一般次序如下:首先调用基类构造函数,调用顺序按照它们被继承时说明的顺序。然后调用子对象的构造函数,调用顺序按照它们在类中的说明顺序。最后是派生类构造函数中的内容。题中定义派生类对象d时,先调用基类Base的构造函数输出BBBf(注意:基类Base构造函数中调用的函数f()是基类中的实现,而不是派生类中的实现),然后调用派生类Derived的构造函数输出DD。

  • 第2题:

    有下列程序: include using namespace std; class Demo { public: Demo(){cout<<"d

    有下列程序: #include<iostream.h> using namespace std; class Demo { public: Demo(){ cout<<"default constmctor\n";} Demo(const Demo &x){ cont<<"copy constructor\n";} }; Demo userCode(Demo b){Demo c(b);return c;} int

    A.1和1

    B.1和2

    C.2和3

    D.2和4


    正确答案:C
    解析: 此题考查的是虚函数的应用。C++语言中,在创建一个对象时,会自动调用类的构造函数,所以语句“Demoa,d;”将调用函数Demo()两次。当一个对象作为实参传递给函数时,为初始化形参,要调用复制构造函数;在函数返回一个对象时调用复制构造函数。所以语句“d=userCode(a);”调用复制构造函数3次。

  • 第3题:

    阅读下列说明和C++代码,填写程序中的空(1)~(6),将解答写入答题纸的对应栏内。
    【说明】
    以下C++代码实现一个简单绘图工具,绘制不同形状以及不同颜色的图形。部分类及其关系如图6-1所示。



    【C++代码】
    #include?#include?using?namespace?std;class?DrawCircle?{??????//绘制圆形,抽象类? ? ? public: (1);//定义参数为?int?radius,?int?x,?inty? ?virtual~DrawCircle()?{?}};class?RedCircle:public?DrawCircle?{????//绘制红色圆形? ? ? ? public: void?drawCircle(intradius,?int?x,?int?y)?{cout?<?drawCircle?=?drawCircle;? }? ?virtual~shape()?{?}? public:? ?virtual?void?draw()?=?0;};class?Circle:public?Shape?{????//圆形? ? private:? ? ?int?x,y,radius;? ? public:? Circle(int?x,inty,int?radius,DrawCircle?*drawCircle)? (3)? {? this->x?=?x;? ?this->y?=?y;? ? this->radius?=?radius; }? ? ? public:? void?draw(){? drawCircle?-> (4); }};int?main(){Shape?*redCirclenew?Circle(100,100,10,????(5)????);//绘制红色圆形? Shape?*greenCircle=new?Circle(100,100,10, (6)??);//绘制绿色圆形redCircle >draw();? ?greenCircle?->draw();? ?return?0;}


    答案:
    解析:
    (6)(1)void drawCircle (int radius,int x,int y)
    (2)DrawCircle*drawCircle
    (3)drawcircle
    (4)drawCircle(radius,x,y)
    (5)new RedCircle()
    (6)new GreenCircle()【解析】
    第一空是填接口里面的方法,在接口的实现里面找,可以发现应该填void drawCircle (int radius,int x,int y)。
    第二空可以根据后面this drawCircle=drawCircle判断,这里应该有一个drawCircle属性,因此应该填)DrawCircle drawCircle。
    第三空这里填drawcircle,用-> drawcircle来引用父类的成员。
    第四空调用drawCircle(radius,x,y)方法。
    第五、六空分别创建一个红色圆形对象和一个绿色圆形对象作为Circle里面的实参。

  • 第4题:

    有如下程序:includeusing namespace std;classDemo{public: Demo(){cont<<"default

    有如下程序: #include<iostream.h> using namespace std; class Demo { public: Demo(){ cont<<"default constructor\n";} Demo(const Demo &x){ cont<<"copy constructor\n";} }; 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)被调用的次数分别是

    A.1和1

    B.1和2

    C.2和3

    D.2和4


    正确答案:C
    解析:本题考核构造函数的应用,有一定的深度。函数Demo()为构造函数,而Demo(constDemo&x)为复制构造函数。C++在创建一个对象时,会自动调用类的构造函数,所以语句“Demoa,d;”将调用函数Demo()2次。当一个对象作为实参传递给函数时为初始化形参,要调用拷贝构造函数;在函数返回一个对象时调用拷贝构造函数。由此可知语句“d=userCode(a);”调用复制构造函数3次。

  • 第5题:

    设有如下程序:include class A{public:int i;display(){ cout<<"class A\n"; }};c

    设有如下程序:#include <iostream. h>class A{public:int i;display(){ cout<<"class A\n"; }};class B{public:int i;display(){ cout<<"class B\n"; }};class C: public: A, public: B{int j;public:int i;show(){ j=i*i; display(); }};void main(){C demo;demo. show();}则主程序运行时,将( )。

    A.因为变量i的重复定义而报错

    B.因为对象demo间接调用display函数时产生歧义性而报错

    C.因为类定义的语法错误而不能运行

    D.没有语法错误,能够正常输出结果


    正确答案:B