计算机二级

下列程序的输出结果为2,请将程序补充完整。 include using namespaee std; class B下列程序的输出结果为2,请将程序补充完整。include <iostream>using namespaee std;class Base{public:______void fun( ){cout<<1;}};class Derived:public Base{public:void fun( ){cout<<2;}};int main( ){Base*P=new Derived:p->

题目
下列程序的输出结果为2,请将程序补充完整。 include using namespaee std; class B

下列程序的输出结果为2,请将程序补充完整。

include <iostream>

using namespaee std;

class Base{

public:

______void fun( ){cout<<1;}

};

class Derived:public Base{

public:

void fun( ){cout<<2;}

};

int main( ){

Base*P=new Derived:

p->fun( );

delete P;

return 0;

}

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

已知如下程序的输出结果是23,请将画线处缺失的部分补充完整。 include using namespac

已知如下程序的输出结果是23,请将画线处缺失的部分补充完整。

include <iostream>

using namespace std;

class MyClass {

public:

void Print() const { cout << 23; }

};

int main() {

MyClass* p = new MyClass();

【 】.Print();

return 0;

}


正确答案:(*p)
(*p) 解析:本题考查的知识点是:成员函数的调用。通过对象调用成员函数使用“.”运算符,而通过对象的指针调用成员函数则是用“->”运算符。本题中,Print()函数之前已经有一个“.”了,所以这里要填入的是一个对象。但题目中只定义了一个 MyClass类的指针p,所以此处应填入将指针转化为指针所指对象的表达式(*p)。

第2题:

请将如下程序补充完整,使得输出结果为:bbaa。 include using naluespace std; class

请将如下程序补充完整,使得输出结果为:bbaa。

include<iostream>

using naluespace std;

class A{

public:

______{eout<<"aa";}

};

class B:public A{

public:

~B( ){eont<<"bb";}

};

int ulain( ){

B*P=new B;

delete P;

return 0;

}


正确答案:~A( )
~A( ) 解析:派生类和基类的析构函数调用顺序是先调用派生类的析构函数,然后调用基类的析构函数,打印“bb”说明已经在调用派生类的析构函数,则要继续打印“aa”,显然就只有定义在基类的析构函数中去打印,故答案为~A( )。

第3题:

若下列程序运行时输出结果为 1,A,10.1 2,B,3.5 请将程序补充完整。 include using name

若下列程序运行时输出结果为

1,A,10.1

2,B,3.5

请将程序补充完整。

include<iostream>

using namespace std;

int main()

{

void test(int,char,double______);

test(1,'A',10.1);

test(2,'B');

return 0;

}

void test(int a,char b,double c)

{

cout<<a<<','<<b<<','<<c<<end1;

}


正确答案:=3.5
=3.5 解析:本题考查了函数默认参数的应用。本题中第一次调用 rest()函数数值1,A,10.1;第二次调用少了一个实参,却要求输出 2,B,3.5,由此分析,应将test()函数的第三个参数声明为默认参数。且默认为3.5,才能达到要求的输出结果。故应填入=3.5或者c=3.5。

第4题:

下列程序的输出结果为2,请将程序补充完整。 include using namespace std; class Base

下列程序的输出结果为2,请将程序补充完整。

include<iostream>

using namespace std;

class Base

{

public:

______void fun(){cout<<1;}

};

class Derived:public Base

{

public:

void fun(){cout<<2;}

};

int main()

{

Base*p=new Derived;

p->fur();

delete p;

return 0;

}


正确答案:virtual
virtual 解析:本题考核虚函数的概念。在C++中,一个基类指针(或引用)可以用于指向它的派生类对象,而且通过这样的指针(或引用)调用虚函数时,被调用的是该指针(或引用)实际指向的对象类的那个重定义版本,这样的调用称为多态调用。基类Base和派生类Derived中都定义了成员函数fun,但是有不同的实现。程序最后输出的结果为2,表明通过对象指针p调用的函数版本为派生类中定义的,只有把基类的fun函数定义为虚函数,才能满足要求。

第5题:

请将下列程序的横线处补充完整,使得输出结果为bbaaincludeusing namespace std;class

请将下列程序的横线处补充完整,使得输出结果为bbaa

include<iostream>

using namespace std;

class A{

public:

______{cout<<"aa";}

};

class B:public A{

public:

~B(){cout<<"bb";}

};

int main(){

B*p=new


正确答案:~A()
~A() 解析: 此题考查的是类的构造与析构。本题要求输出的结果中包含aa,所以基类A中横线处的函数一定要被执行。横线处应是定义基类的构造或者析构函数,如果定义的是构造,那么aa肯定在new操作时就输出,而下面的bb是在析构函数中,会在delete时被输出。故可以肯定应填入基类A的析构函数定义:~A()。

第6题:

下列程序的输出结果为2,请将程序补充完整。 include using namespace std; class Basc

下列程序的输出结果为2,请将程序补充完整。

include<iostream>

using namespace std;

class Basc

{

public:

【 】void fun(){cout<<1;}

};

class Dcrived:public Base

{

public:

void fun(){cout<<2;}

};

int main()

{

Base*p=new Derived;

p->fun();

delete p;

return 0;

}


正确答案:virtual
virtual 解析:利用虚函数实现多态。

第7题:

下列程序的输出结果为2,请将程序补充完整。 inelude using namespace std; class Bas

下列程序的输出结果为2,请将程序补充完整。

inelude<iostream.h>

using namespace std;

class Base

{

public:

______ void fun( ){cout<<1;}

};

class Derived: public Base

{

pbulic:

void fubn( ){cout<<2;}

};

int main( )

{Base*P=new Derived;

P→fun( );

delete P;

return 0;

}


正确答案:virtual
virtual 解析:本题考查虚函数的概念。在C++中,一个基类的指针可以用于指向它的派生类对象。而且通过这样的指针调用虚函数时,被调用的是该指针实际指向的对象类的那个重定义版本。在本题中,通过对象指针P调用的是派生类中重定的。fun函数,那么基类中的fun只有是虚函数才能满足要求。

第8题:

已知下列程序的输出结果是23,请将横线处缺失的部分补充完整。 include using namespace

已知下列程序的输出结果是23,请将横线处缺失的部分补充完整。

include<iostream>

using namespace std;

class MyClass{

public:

void Print()const{cout<<23;}

};

int main(){

MyClass*p=new MyClass();

______.Print();

return 0;

}


正确答案:(*p)
(*p) 解析:此题考查的知识点是成员函数的调用。通过对象调用成员函数使用“.”运算符,而通过对象的指针调用成员函数则使用“->”运算符。题目中,Print()函数之前已经有一个“.”,所以此处应填入一个对象,所以就把指针p转化成指针所指的对象,填入表达式(*P)。

第9题:

下面程序的输出结果为:Base:: fun,请将程序补充完整。include class Base{public: 【】

下面程序的输出结果为:Base:: fun,请将程序补充完整。

include <iostream.h>

class Base{

public:

【 】 fun(){cout<<"Base::fun"<<end1:}

class Derived : public Base{

public:

【 】 fun(){ cout<<"Derived::fun"<<end1; }

};

int main()

{

Base a,*pb;

Derived b;

pb = &b;

pb->fun();

return 0;

}


正确答案:virtual void void
virtual void void 解析:本题考核虚函数的使用。在C++中,一个基类指针(或引用)可以用于指向它的派生类对象,而且通过这样的指针(或引用)调用虚函数时,被调用的是该指针(或引用)实际指向的对象类的那个重定义版本,这样的调用称为多态调用。基类Base和派生类Derived中都定义了成员函数fun,但是有不同的实现。程序最后输出的结果为:Base::fun,表明通过对象指针pb调用的函数版本为派生类中定义的,只有把基类的fun函数定义为虚函数,才能满足要求。同时通过函数fun的定义可知函数的返回类型为void。