niusouti.com

下列程序的输出结果是 ( )#includeusing namespace std;class A{int apublic:A():a(9){}virtual void print() const {cout<};class B:public A{char b;public:B(){b= ‘S’;}void print()const{cout<};void show(Aa&X){X,print()}int main(){ Ad1;*p;Bd2;p=&d2;d1,print();d2,print();p->

题目

下列程序的输出结果是 ( )

#include

using namespace std;

class A{

int a

public:

A():a(9){}

virtual void print() const {cout<};

class B:public A{

char b;

public:

B(){b= ‘S’;}

void print()const{cout<};

void show(Aa&X){X,print()}

int main()

{ Ad1;*p;

Bd2;

p=&d2;

d1,print();

d2,print();

p->print();

show(d1);

show(d2);

return 0;}


相似考题
参考答案和解析
正确答案:

s--

更多“下列程序的输出结果是( ) #include usingnamespacestd; classA{ inta public: A() ”相关问题
  • 第1题:

    有以下程序:includeusing namespace std;classA{private: int x;public: A(int a) {x

    有以下程序: #include<iostream> using namespace std; class A { private: int x; public: A(int a) { x=a; } friend class B; }; class B { public: void print(A a) { a.x--; cout<<a, x<<end1; } }; int main () { A a(10); B b; b.print (a) ; return 0; } 程序执行后的输出结果是( )。

    A.9

    B.10

    C.11

    D.12


    正确答案:A
    解析:本题考核友元类的应用。在程序中,类B是类A的友元类,因此,在类B的所有成员函数中均可访问类A的任何成员。在main()中,先定义类A的一个对象a(10)和类B的一个对象b。然后通过对象b调用其成员函数print(),输出对象a的私有成员x的值减1即9。

  • 第2题:

    下面程序的输出结果是【】。 include using namespace std; class A {int a,b; public:A

    下面程序的输出结果是【 】。

    include <iostream>

    using namespace std;

    class A

    {

    int a, b;

    public:

    A()

    {

    a = b = 0;

    }

    A(int aa, int bb ) : a(aA) , b(bB)

    {

    cout <<"a="<<a<<","<<"b="<<b<<",";

    }

    ~A()

    {

    cout<<"D";

    };

    int main ( )

    {

    A x, y(2, 3);

    return 0;

    }


    正确答案:a=2b=3DD
    a=2,b=3DD 解析:本题主要考核构造函数与析构函数的应用。主函数中定义 A类对象x时无输出,定义对象y时调用构造函数输出a=2,b=3。在主函数结束前,对象x,y都调用各自的析构函数输出DD。所以最后答案为a=2,b=3DD。

  • 第3题:

    若有以下程序:include using namespace std;class A{protected: int a;public: A() {

    若有以下程序: #include <iostream> using namespace std; class A { protected: int a; public: A() { a=10; } }; class A1 : public A { public: A1() { a=a+1; } }; class A2 : public A { public: A2 () { a=a+2; } }; class B : public A1,public A2 { public: B(){} void print() { cout<<a<<end1; } }; int main ( ) { B obj; obj.print(); return 0; } 程序运行后的输出结果是( )。

    A.产生语法错误

    B.11

    C.12

    D.10


    正确答案:A
    解析:本题考核派生类的定义和使用。本程序有语法错误,这是由于类B中的print函数中的语句“coutaend1;”要输出成员a的值,从而产生了二义性。分析如下:程序中定义了类A,类A1和类A2都是在类A的基础上以公有继承方式产生的派生类,而类B是在类A1和类A2的基础上经过多重继承方式产生的派生类,所以在类B中成员a有两个拷贝,系统无法区分是从A1继承过来的a,还从A2类继承过来的a。修改方法有以下两种:①在被访问的成员加上作用域分辨符“::”。将类B中的print()函数体中语句改为:coutA1::aend1;或coutA2::aend1;但两者的输出结果不同,前者输出11,而后者输出12。②采用虚基类的方法。就是在定义A1和A2时,在派生方式前加上关键词“virtual”。

  • 第4题:

    如下程序的输出结果是includeusing namespace std;class A{public:A( ){cout<<"A";}}

    如下程序的输出结果是 #include<iostream> using namespace std; class A{ public: A( ){cout<<"A";} }; class B{public:B( ){cout<<"B";}}; class C:public A{ B b; public: C( ){cout<<"C";} }; int main( ){C obj;return 0;}

    A.CBA

    B.BAC

    C.ACB

    D.ABC


    正确答案:D
    解析:派生类的构造函数的执行顺序是,先调用基类的构造函数,然后调用派生类的构造函数。当类中的数据成员为对象时,先调用对象成员的构造函数。

  • 第5题:

    下面程序执行的结果是【 】 include using namespace std; class A{ public: static in

    下面程序执行的结果是【 】

    include<iostream>

    using namespace std;

    class A{

    public:

    static int x;

    A(inty){cout<<x+y;}

    };

    int A::x=2;

    void main(){

    A a(5);

    }


    正确答案:7
    7 解析:程序的静态变量初始化为2,而构造函数招待过程中y变量为初始化为5,故程序执行的结果为7。

  • 第6题:

    下面程序的输出结果是()。include using namespace std;class A {public:A( ) {cout<<

    下面程序的输出结果是( )。 #include <iostream> using namespace std; class A { public: A( ) {cout<<"A";} } class B { public: B() {coat<<"B" ;} } class C: public A { public: B b; C() {cout<<"C";} } void mian(){ C c; }

    A.CBA

    B.ABC

    C.ACB

    D.BCA


    正确答案:B
    解析:先执行基类A构造函数输出A,调用类B的构造函数输出B,调用本身构造函数输出C。