如下程序的输出结果是______。 include using namespace std; class Pet{ char nam如下程序的输出结果是______。include<iostream>using namespace std;class Pet{char name[10];public:Pet(char*nanle){strcpy(this->name,name);}const char*getName( )const{return name;}virtual void call( )eon

题目
如下程序的输出结果是______。 include using namespace std; class Pet{ char nam

如下程序的输出结果是______。

include<iostream>

using namespace std;

class Pet{

char name[10];

public:

Pet(char*nanle){strcpy(this->name,name);}

const char*getName( )const{return name;}

virtual void call( )eonst=0;

};

class Dog:public Pet{

public:

Dog(char*name):Pet(name){ }

void call( )eonst{cout<<"汪汪叫";}

};

class Cat:public Pet{

public:

Cat(char*name):Pet(name){ }

void call( )const{eout<<"喵喵叫";}

};

int main( ){

Pet*petl=new Dog("哈克"),*pet2=new Cat("吉米");

eout<<petl->getName( );petl->call( );eout<<endl;

cout<<pet2->getName( );pet2->call( );eout<<endl;

return 0;

}


相似考题
更多“如下程序的输出结果是______。 include<iostream> using namespace std; class Pet{ char nam ”相关问题
  • 第1题:

    如下程序的输出结果是includevoid fun(int & X,inty){intt=x;x=y;y=t;}int main(){in

    如下程序的输出结果是 #include<iostream> void fun(int & X,inty){intt=x;x=y;y=t;} int main( ){ int a[2]={23,42}; fun(a[1],a[0]); std::cout<<a[0]<<","<<a[1]<<std::endl; return 0; }

    A.42,42

    B.23,23

    C.23,42

    D.42,23


    正确答案:B
    解析:参数X是引用传递,传递的是地址:参数Y是值传递,函数fun( )是做X与Y值交换,交换后X的值要被回传给a[1],此时a[1]=a[0]=23。

  • 第2题:

    若有如下程序段: include using namespace std; int main() {char*p="abcdefgh",*r;l

    若有如下程序段:

    include <iostream>

    using namespace std;

    int main()

    {

    char *p="abcdefgh",*r;

    long *q;

    q=(long *)p;q++;

    r=(char *)q;

    cout<<r<<end1;

    return 0;

    }

    该程序的输出结果是______。


    正确答案:efgh
    efgh 解析:本题定义了一个字符型指针变量p,并通过赋初值让它指向了一个字符串,还定义了另一个字符型指针变量r和一个长整型指针变量q。首先通过语句“a=(long*)p;”,把p的地址值强制转换为长整型地址值并赋值给小然后执行“q++”,地址值增加了4,执行语句“r=(char*)q;”,把长整型指针变量q的值再强制转换成字符型地址值并赋给r,r的值应为字符串中字符“e”的地址。最后输出r指向的字符串。

  • 第3题:

    下列程序的输出结果是()。includevoid main(){char*Str;str="testI";cout<

    下列程序的输出结果是( )。 #include<iostream.h> void main() { char*Str; str="testI"; cout<<str[5]; }

    A.test!

    B.test

    C.空字符

    D.异常


    正确答案:C
    解析: 字符指针str值为“test!”,它们的下标由0开始,并且具有一个尾符,输出str[5]的位置为尾符标识,指针字符指向的尾符为空。所以答案为空字符,即选项C)正确。

  • 第4题:

    有如下程序: include using namespace std; class Pet{ char name[10]; public: Pet(c

    有如下程序:

    include<iostream>

    using namespace std;

    class Pet{

    char name[10];

    public:

    Pet(char*name){strcpy(this->name,name);}

    const char*getName()const {return name;}

    virtual void call()const=0;

    };

    class Dog:public Pet{

    public:

    Dog(char*name):Pet(name){}

    void call()const{cout<<"汪汪叫":}

    };

    class Cat:public Pet{

    public:

    Cat(char*name):Pet(name){}

    void call()const{cout<<"喵喵叫";}

    };

    int main(){

    Pet*pet1=new Dog("哈克"),*pet2=new Cat("吉米");

    cout<<pet1->getName();pet1->call();cout<<end1;

    cout<<pet2->getName();pet2->call();cout<<end1;

    return 0;

    }

    程序的输出结果是______。


    正确答案:哈克汪汪叫 吉米喵喵叫
    哈克汪汪叫 吉米喵喵叫 解析:此题考查的是虚函数与多态性。在成员函数的声明前面加上virual关键字,即可把函数声明为虚函数;在C++中,一个基类指针可以用于指向它的派生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对象类的那个重定义版本。即若基类和派生类中存在一模一样的成员函数,通过该基类指针调用这样的成员函数时,若这个成员函数被定义成虚函数,那么就调用派生类中的;否则就调用基类中的。本题中,在f()函数中,此题中,void call()在基类中被声明为虚函数,在主函数中,语句Pet*pet1=new Dog("哈克"),*pet2=new Cat("吉米");定义了基类的指针per1和pet2,并让它们分别指向派生类对象Dog和Cat。所以通过该指针调用call()时运行的是派生类的版本,分别输出哈克和吉米;而通过该指针调用 getName()运行的是基类的版本,分别输出汪汪叫和喵喵叫。

  • 第5题:

    以下程序的输出结果是()。includeincludeusing namespace std;void func(cha

    以下程序的输出结果是( )。 #include<iostream> #include<stdlib> using namespace std; void func(char **m) { ++m; cout<<*m<<endl; } main() { static char *a[]={"MORNING","AFTERNOON","EVENING"); char **n; n=a; func(n); system("PAUSE"); return 0; }

    A.为空

    B.MORNING

    C.AFTERNOON

    D.EVENING


    正确答案:C