niusouti.com

有如下程序:includeUsing namespace std;Class Demo{public:Demo(){cout有如下程序: #include<iostream.h> Using namespace std; Class Demo { public: Demo(){ cout<<“default constructor\n”;} Demo(const Demo &x){ cont<<“copy constructor\n”;} }; Demo usercode(Demob){Demo c(b)

题目
有如下程序:includeUsing namespace std;Class Demo{public:Demo(){cout<<“default

有如下程序: #include<iostream.h> Using namespace std; Class Demo { public: Demo(){ cout<<“default constructor\n”;} Demo(const Demo &x){ cont<<“copy constructor\n”;} }; Demo usercode(Demob){Demo c(b);return c;} int main() {

A.1和1

B.1和2

C.2和3

D.2和4


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

    有如下程序: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次。

  • 第2题:

    设有如下程序: include using namespace std; class A { public:int i;display(){co

    设有如下程序: #include <iostream> using namespace std; 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(); } }; int main() { C demo; demo.show(); return O; } 则主程序运行时将( )。

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

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

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

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


    正确答案:B
    解析:本题主要考察C++中多继承的工作方式和二义性的解决办法。在C++中,允许一个派生类从多个基类派生,这种继承方式称为多继承。多继承的定义格式如下:class派生类名>:继承方式>基类名1>,继承方式2>基类名2>,…{派生类类体>};但是,如果一个派生类的两个或多个基类中有某个同名成员,在派生类中对这个成员的访问就可能出现二义性;同时,如果一个派生类是由两个或多个基类派生出来的,而这几个基类又有一个共同的基类,对该基类进行访问时,也可能会出现二义性。本题程序中,类C是由类A和类B多继承得到的派生类,但其自身函数show()中调用了display()函数,而这个函数是同时出现在类C的两个基类中的,因此程序会出现二义性,编译器将无法确定调用哪一个display()函数来执行操作,因此报错。解决二义性的通常办法是通过作用域运算符“::”进行限定。

  • 第3题:

    设有如下程序: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

  • 第4题:

    有下列程序: 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次。

  • 第5题:

    有以下程序:include using namespace std;class A{public: virtual void show() {cout

    有以下程序:

    include <iostream>

    using namespace std;

    class A

    {

    public:

    virtual void show()

    {

    cout<<"A";

    }

    };

    class B : public A

    {

    public:

    void show()

    {

    cout << "B";

    }

    };

    void display( A * obj )

    {

    obj-> show();

    }

    int main ( )

    {

    A demol;

    B demo2;

    display( & demol );

    display( & demo2 );

    return 0;

    }

    执行后的输出结果为【 】。


    正确答案:AB
    AB 解析:本题考核赋值兼容原则以及派生与继承的应用。题中函数display()形参类型为类A,执行语句“display(&demo1);”则输出A。执行语句“display(&dem02);”时,由于show()函数为虚函数,所以调用类B中show()函数,输出B。所以最后结果为AB。