下列程序运行后的输出结果是( )。#include#includeusing namespace std;class Person{public:Person(string n):name(n) { coutprivate:int year,month,day;};class Student:public Person{public:Student(string n,int y,int m,int d,char c):birthday(y,m,d),sex(c),Person(n) { coutA. SB

题目

下列程序运行后的输出结果是( )。#include#includeusing namespace std;class Person{public:Person(string n):name(n) { cout<<'P'; }private:string name;};class Date{public:Date(int y=2012,int m=12,int d=21):year(y),month(m),day(d) { cout<<'D'; }

private:int year,month,day;};class Student:public Person{public:Student(string n,int y,int m,int d,char c):birthday(y,m,d),sex(c),Person(n) { cout<<'S'; }private:Date birthday;char sex;};int main(){Student stu1("Zhang",1990,10,1,'F');return 0}

A. S

B.PS

C.DPS

D.PDS


相似考题
更多“下列程序运行后的输出结果是( )。#include#includeusing namespace std;class Person{public: ”相关问题
  • 第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<iostream>

    usingnamespaeestd;

    classTestClass

    {

    public:

    voidwho(){cout<<"TestClass"<<endl;}

    };

    classTestClassl:publicTestClass

    {

    public:

    voidwho(){cout<<"TestClassl"<<endl;}};

    intmain()

    {

    TestClass*P;

    TestClasslobj1;

    p=&obj1;

    p->who();

    retum0;

    }

    则该程序运行后的输出结果是( )。

    A.TestClassl

    B.TestClass

    C.0

    D.无输出


    正确答案:A
    A。【解析】程序中的TestClassl为TestClass的派生类,主函数main中定义。TestClass对象*P,TestClassl对象objl,然后P引用0bjl,执行p->who则是调用基类中的who函数,输出TestClass。

  • 第3题:

    若有以下程序:includeusing namespace.std;class data{public: int x; data (int x)

    若有以下程序: #include<iostream> using namespace.std; class data { public: int x; data (int x) { data::x=x; } ); class A { private: data d1; public: A(int x) :dl(X){} void dispa() { cout<<dl.X<<","; } }; class B:public A { private: data d2; public: B(int x) : A(x-1),d2(x){} void dispb() { cout<<d2.x<<endl; } }; class C:public B { public: C(int x) :B(x-1){} void disp() { dispa(); dispb(); } }; int main() { C obj(5); obj.disp(); return 0; } 程序执行后的输出结果是

    A.5,5

    B.4,5

    C.3,4

    D.4,3


    正确答案:C
    解析:本题考核派生类的定义和访问权限。本题涉及多层次的继承关系。类B是类A的派生类,类C又是类B的派生类。类C中的构造函数调用了类B的构造函数来初始化类B的私有数据成员,而类B的构造函数又调用了类A的构造函数来初始化类A的私有数据成员。由此可知,程序最后的输出为3,4。

  • 第4题:

    请将下列程序的横线处补充完整,使得输出结果为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()。

  • 第5题:

    若有如下程序: #include<iostream> usingnamespaeestd; classTestClass { public: voidwho(){cout<<"TestClass"<<endl;} }; classTestClassl:publicTestClass { public: voidwho(){cout<<"TestClassl"<<endl;}}; intmain() { TestClass*P; TestClasslobj1; p=&obj1; p->who(); retum0; } 则该程序运行后的输出结果是( )。

    A.TestClassl

    B.TestClass

    C.0

    D.无输出


    正确答案:A
    A。【解析】程序中的TestClassl为TestClass的派生类,主函数main中定义。TestClass对象*P,TestClassl对象objl,然后P引用0bjl,执行p->who则是调用基类中的who函数,输出TestClass。