有如下程序: #included<iostream> usingnamespqcestd; classTestClass { private; charC; public; TestClass(charn):c(n){} ~TestClass() { cout<<c; } }; classTestClassl:publicTestClass { private: charC; public: TestClassl(charn):TestClass(n+1),c(n){}~TestClassl() { co

题目

有如下程序: #included<iostream> usingnamespqcestd; classTestClass { private; charC; public; TestClass(charn):c(n){} ~TestClass() { cout<<c; } }; classTestClassl:publicTestClass { private: charC; public: TestClassl(charn):TestClass(n+1),c(n){}~TestClassl() { cout<<c; } }; intmain() { TestClasslobj(X); return0; } 执行上面的程序将输出( )。

A.xy

B.yx

C.X

D.y


相似考题
更多“有如下程序: #included&lt;iostream&gt; usingnamespqcestd; classTestClass { private; char ”相关问题
  • 第1题:

    有以下程序include include using namespace std;class base{private:char

    有以下程序 #include <iostream> #include <string> using namespace std; class base { private: char baseName[10]; public: base () { strcpy(baseName,"Base"); } virtual char *myName() { return baseName; } char *className() { return baseName; } }; class Derived : public base { private: char derivedName[10]; public: Derived() { strcpy(derivedName,"Derived"); } char *myName() { return derivedName; } char *className() { return derivedName; } }; void showPtr(base &p) { cout<<p.myName () <<" "<<p.className (); } int main () { base bb; Derived dd; showPtr(dd); return 0; } 运行后的输出结果为

    A.Derived Base

    B.Base Base

    C.Derived Derived

    D.Base Derived


    正确答案:A
    解析:本题考核虚函数的应用。类Derived是从基类Base公有派生而来的。因此,Derived是基类Base的子类型。main()函数中定义了一个基类对象bb和一个派生类对象dd。从程序,中可看出派生类Derived的对象dd交给了处理基类Base的对象的函数showPtr进行处理。由于在基类中函数myName被定义成虚函数。所以在函数 showPtr中调用的myName函数为派生类的成员函数 myName,从而输出Derived。然后输出className,即基类名称Base。

  • 第2题:

    有下列程序:includeusing namespace std;c1ass TestClass{private;char c;public:Tes

    有下列程序: #include<iostream> using namespace std; c1ass TestClass { private; char c; public: TestClass(char n):c(n){} ~TeStClass() { cout<<c } }; class TestClass1:public TestClass {

    A.xy

    B.yx

    C.x

    D.y


    正确答案:A
    解析: 题目中程序TestClass为基类,TestClass1为派生类。在主函数中定义TestClass1对象obj('x'),“TestClass1(char n):TestClass(n+1),c(n){}”,所以先输出x,然后调用基类构造函数,′x′+=′y′,所以输出y,即答案为xy。

  • 第3题:

    TestClass类定义如下: class TestClass { private: intid; char gender; char*phone; public: TestClass ():id(0),gender('#'),phone(NULL){) TestClass(int no,char ge='#',char *ph=NULL) {id=no;gender=ge;phone=ph;} }; 下面类对象定义语句中错误的是( )。

    A.TestClass myObj(i);

    B.TestClass myObj(2,"11101111155");

    C.TestClass myObj(1,'m');

    D.TestClass myObj;


    正确答案:B
    解析:B) 中由于有两个参数,所以其调用了第二个构造函数,第二个构造函数的两个缺省参数,在调用时,实参会按从左到右的顺序传给形参,所以第二个参数“11101111155”会传递给形参ge,而原型中的ge为字符型,实参为指向字符的指针,所以在编译时会出现错误。A) 与C) 都能够正确的实现参数的传递。对于D) ,由于在创建TestClass的实例myObji时,没有参数,所以其调用了第一个构造函数。

  • 第4题:

    有如下程序: include using namespace std; class TestClass { private: int x,y; pu

    有如下程序: #include<iostream> using namespace std; class TestClass { private: int x,y; public: TestClass (int i,int j) { x=i; y=j; } void print() { cout<<"print1"<<end1; } void print()const { cout<<"print2"<<end1; } }; int main() { const TestClass a(1,2); a.print(); return 0; } 该程序运行后的输出结果是( )。

    A.print1

    B.print2

    C.print1 print2

    D.程序编译时出错


    正确答案:B
    解析:由主函数main入手,定义TestClass型的常对象a,然后调用对象a中的成员函数print()。因为在C++中,如果一个对象被声明为常对象,则不能调用该对象中的非const型的成员函数。所以,这里调用的是对象中的const型成员函数“void print()const”,输出为print2。

  • 第5题:

    有下列程序:includeusing namespace std;class TestClass{private:int x,y;public:Te

    有下列程序: #include<iostream> using namespace std; class TestClass { private: int x,y; public: TestClass (int i,int j) { x=i; y=j; } void print() { cout<<"printl"<<endl; } vo

    A.print1

    B.print2

    C.pfint1 print2

    D.程序编译时出错


    正确答案:B
    解析: 由主函数main入手,定义TestClass型的常对象a,然后调用对象a中的成员函数print()。因为在C++中,如果一个对象被声明为常对象,则不能调用该对象中的非const型的成员函数。所以,这里调用的是对象中的const型成员函数“void print ()const”,输出为print2。