下列程序执行结果是()。includeclass A{public:int a;A():a(10){cout下列程序执行结果是( )。 #include<iostream.h> class A {public: int a; A():a(10){cout<<a<<endl;} }; void main() { A obj1; A obj2(obj1); cout<<""((obj2.a<<endl; )A.10 10B.编译错误缺少拷贝构造函数C.10随机数D.随机数随机数

题目
下列程序执行结果是()。includeclass A{public:int a;A():a(10){cout<

下列程序执行结果是( )。 #include<iostream.h> class A {public: int a; A():a(10){cout<<a<<endl;} }; void main() { A obj1; A obj2(obj1); cout<<""((obj2.a<<endl; )

A.10 10

B.编译错误缺少拷贝构造函数

C.10随机数

D.随机数随机数


相似考题
更多“下列程序执行结果是()。#include<iostream.h>class A{public:int a;A():a(10){cout<<a<<endl;}};v ”相关问题
  • 第1题:

    下列程序的运行结果是______。include class Base { public: void f(int x){cout<<“B

    下列程序的运行结果是______。

    include<iostream.h>

    class Base

    {

    public:

    void f(int x){cout<<“Base:”<<x<<endl;}

    );

    class Derived:public Base

    {

    public:

    void f(char*str){cout<<“Derived:”<<str<<endl;}

    };

    void main(void)

    {

    Base*pd=ne


    正确答案:Base:97。
    Base:97。 解析: 本题主要考查两个知识点,一是基类指针可以指向派生类对象,并可以访问派生类的所有成员。二是在函数重载中进行隐式类型转换。如pd->f(‘a’);系统到底调用哪个重载函数呢?实参既不是派生类中的形参,也不是基类中f函数的形参类型。此时系统根据就近原则和从高优先级到低优先级的规则尝试隐式转换。单字符更接近整数,故调用的是基类的f函数。

  • 第2题:

    下列程序执行结果是 include class A { public: int a; A(

    下列程序执行结果是 #include <iostream.h> class A { public: int a; A():a(10){cout<<a<<endl;} }; void main() { A obj1; A obj2(obj1); cout<<" "<<obj2.a<<endl; }

    A.10 10

    B.编译错误缺少拷贝构造函数

    C.10随机数

    D.随机数随机数


    正确答案:A
    解析:本题考察拷贝构造函数的知识。如果类中没有实现拷贝构造函数,则编译器会为其自动生成一个。对于本题这种简单对象,默认生成的拷贝构造函数可以完成数据成员的自动赋值,对于复杂对象.则可能需要显式定义拷贝构造函数。

  • 第3题:

    以下程序的执行结果是______. include< c1ass A { public: virtual void funl ()

    以下程序的执行结果是______.

    include<<iostream.h>

    c1ass A

    {

    public:

    virtual void funl () { cout<<"A fun1"<<endl;}

    virtual void fun2 () {cout<<"A fun2"<<endl;

    void fun3 () {cout<<" A fun 3 "<<endl:)

    void fun4 () {cout<<" A fun4 "<<endl:}


    正确答案:B fun1 A fun2 A fun3 A fun4
    B fun1 A fun2 A fun3 A fun4

  • 第4题:

    以下程序的执行结果是______。 include class base { public: virtual void who(){c

    以下程序的执行结果是______。

    include<iostream.h>

    class base

    {

    public:

    virtual void who(){cout<<"base class"<<endl:}

    };

    class derrvel:public base

    {

    public:

    void who(){cout<<"derivel class"<<endl:}

    };

    class derive2;public base

    {

    public:

    void who() {cout<<"derive2 class"<<endl;}

    };

    void main()

    {

    base obj1,*P;

    derive1 obj2;

    derive2 obj3:

    p=&obj1;

    p->who();

    p=&obj2:

    p->who();

    p=&obj3;

    p->who();

    }


    正确答案:base class derivel class derive2 class
    base class derivel class derive2 class

  • 第5题:

    下列程序的运行结果是______。 include class Base { public: virtual void func(int

    下列程序的运行结果是______。

    include<iostream.h>

    class Base

    {

    public:

    virtual void func(int i){cout<<"class Base:"<<i<<end1;)

    };

    class Derived: public Base

    {

    public:

    void func(double d){cout<<"class Derived:"<<d<<endl;}

    };

    void main( )

    {

    Base a,*p=a;

    Derived b;

    p=&b;

    (*p).func(3.3);

    }


    正确答案:class Base:3
    class Base:3 解析:题中基类和派生类中有同名函数,但是参数不同。派生关系中,只有在函数类型、函数名和参数个数、参数类型完全相同时,才表现多态性。本题中参数不同,编译器便认为是两个完全不同的函数。通过基类的指针指向派生类对象时,该指针只能访问到派生类中具有多态性的成员函数,而与基类无关的函数是无法通过基类指针来访问的。故调用的是base类的 func函数,系统将3.3强制转化为整型数3。如果将派生类中的func的形参改为int型,则执行的就会是派生类的func函数,此时表现为多态。