itgle.com

下列程序编译时发现pb->f(10);语句出现错误,其原因是______。 include class Base {下列程序编译时发现pb->f(10);语句出现错误,其原因是______。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;}};vo

题目
下列程序编译时发现pb->f(10);语句出现错误,其原因是______。 include class Base {

下列程序编译时发现pb->f(10);语句出现错误,其原因是______。

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)

{

Derived*pd=new Derived;

Pd->f(10);

}


相似考题
更多“下列程序编译时发现pb->f(10);语句出现错误,其原因是______。 include<iostream.h> class Base { ”相关问题
  • 第1题:

    下列程序如果去掉for循环外围的大括号对,则会出现编译错误。错误原因是______。

    include<iostream.h>

    int a=5;

    void main( )

    {

    int a=10,b=20;

    cout<<a<<","<<b<<endl;

    {

    int a=0,b=0;

    for(int i=1;i<8;i++)

    {

    a+=i;

    b+=a;

    }

    cout<<a<<","<<b<<","<<::a<<endl;

    }

    cout<<a<<","<<b<<endl;

    }


    正确答案:ab重定义
    a,b重定义 解析:在本题中for循环外围的大括号对没有实质含义,仅用于函数的作用域范围。如果去掉该括号,编译错误就会发生,因为变量a,b出现了重定义错误。

  • 第2题:

    在下列的程序的横线处填上适当的语句,使该程序的输出为12。include using namespace

    在下列的程序的横线处填上适当的语句,使该程序的输出为12。

    include<iostream.h>

    using namespace std;

    class Base

    {

    public:

    int a,b;

    Base(int i){a=i;}

    };

    class Derived:public Base

    {

    int a;

    public:

    Derived(int x):Base(x),b(x+1){};

    void show()

    {


    正确答案:eoutBase::a。
    eoutBase::a。 解析: 本题考查的是基类和派生类的构造函数。派生类构造函数的执行顺序:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容。本题要求结果是输出12,分析题目,首先调用基类的构造函数,然后是调用子对象的构造函数,横线处要求输出基类成员a的值,填入toutBase::a即可。

  • 第3题:

    按解释中的要求在下列程序划线处填入的正确语句是:() #include <iostream.h> class Base{ public: void fun() {cout<<"Base::fun"<<endl;} }; class Derived:public Base{ public: void fun() { _______________________//在此空格处调用基类的函数fun() cout<<"Derived::fun"<<endl;} };

    A.fun();

    B.Base.fun();

    C.Base::fun();

    D.Base->fun();


    A解析:Test类实现了Runnable接口。

  • 第4题:

    为使程序的输出结果为: Base:: fun 那么应在下列程序画线处填入的正确语句是( )。 #include <iostream> using namespace std; class Base { public: void fun () { cout<<"Base: :fun"<<end1; } }; class Derived : public Base { public: void fun ( ) { cout<<"Derived: :fun"<<end1; } }; int main ( ) { Base a,*pb; Derived b; _________; pb->fun(); //调用基类的成员函数 fun() return 0 ; }

    A.pb=&a

    B.pb=b

    C.pb=&b

    D.pb=&Base


    正确答案:C
    解析:本题程序中类Derived是从基类Base公有继承的。主函数中定义了一个基类对象a和一个指向基类对象的指针pb,又定义了一个派生类Derived对象b。当pb指向对象b时,pb->fun()调用基类Base的成员函数fun()。这是由于Derived是Base的子类型,因此可以将派生类Derived的对象b的地址赋值给指向基类Base的指针pb,但这时指针pb只能使用从基类Base继承的成员。

  • 第5题:

    如下程序编译时发生错误,错误的原因是show函数实现语句错误,则正确的语句应该为______。

    include<iostream.h>

    class test

    {

    private:

    int hum;

    public:

    test(int);

    void show( );

    };

    test::test(int n){num=n;}

    test::show( ){cout<<num<<endl;}

    void main( )

    {

    test T(10):

    T.show( );

    }


    正确答案:void test::show( ){coutnumendl;}
    void test::show( ){coutnumendl;} 解析:show成员函数的声明和实现不一致,即实现部分应有void修饰符,这样才能编译通过。