有如下程序:#include<iostream>usingnamespacestd;classToy{public:Toy(char*_n){strcpy(name,_n);count++;)~Toy( ){count一一;)char*GetName( ){returnname;}staticintgetCount( ){returncount;)private:charname[10];staticintcount;};intToy::count=0;intmain( ){Toyt1("snoopy")

题目

有如下程序:

#include<iostream>

usingnamespacestd;

classToy{

public:

Toy(char*_n){strcpy(name,_n);count++;)

~Toy( ){count一一;)

char*GetName( ){returnname;}

staticintgetCount( ){returncount;)

private:

charname[10];

staticintcount;

};

intToy::count=0;

intmain( ){

Toyt1("snoopy"),t2("Mickey"),t3("Barbie");

tout<<t1.getCount( )<<endl:

return0;

)

运行时的输出结果是( )。

A.1

B.2

C.3

D.运行时出错


相似考题
更多“有如下程序: #include&lt;iostream&gt;usingnamespacestd; classToy{public: Toy(char*_n){strcp ”相关问题
  • 第1题:

    有如下程序:includeincludeusing namespace std;class BASE{char c;public

    有如下程序: #include<iostream>#include<iosream> using namespace std; class BASE{ char c; public; BASE(char n):c(n){} virtual ~ BASE(){cout<<c;} }; class DERIVED; public BASE{ char c; public: DERIVED (char n): BASE (n+1)

    A.XY

    B.YX

    C.X

    D.Y


    正确答案:A

  • 第2题:

    有如下程序:includeusing namespace std;class Toy{public:Toy(char*_n){strcpy(name

    有如下程序: #include<iostream> using namespace std; class Toy{ public: Toy(char*_n){strcpy(name,_n);count++;} ~Toy(){count--;} char*GetName( ){return name;} static int getCount( ){return count;} private: char name[10]; static int count; }; int Toy::count=0: int main( ){ Toy tl("Snoopy"),t2("Mickey"),t3("Barbie"); cout<<t1.getCount( )<<endl; return 0; } 程序的输出结果是

    A.1

    B.2

    C.3

    D.运行时出错


    正确答案:C
    解析:静态数据成员是同一个类的不同对象之间的数据共享,无论创建多少个类,均只有一个静态数据成员,通过对静态数据成员的调用,实现了数据共享。本题创建了3个Toy对象,所以调用3次构造函数,count被增加3次,故sount=3。

  • 第3题:

    有以下程序includeusing namespace std;class Base{private:char c;public:Base(char

    有以下程序 #include<iostream> using namespace std; class Base { private: char c; public: Base(char n):c(n){} ~Base() { cout<<c; } }; class Derived:public Base { private: char c; public: Derived(char n):Base(n+1),c(n){} ~Derived() { cout<<c; } }; int main() { Derived obj('x'); return 0; } 执行后的输出结果是

    A.xy

    B.yx

    C.x

    D.y


    正确答案:A
    解析:本题考核继承与派生中继承基类的数据成员与成员函数。在C++中,由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。在此题的程序中,在主函数main结束时,派生类Derived对象obj将被删除,所以就会调用对象的析构函数。先调用派生类的析构函数,输出x,然后调用基类的析构函数,输出y。

  • 第4题:

    有如下程序:include using namespace std;class Base{private:charc;public:Base(cha

    有如下程序:#include <iostream>using namespace std;class Base{private: char c;public: Base(char n) :c(n){} ~Base() { cout<<c; } };class Derived: public Base{private: char c; public: Derived(char n):Base(n+1),c(n) {} ~Derived() { cout<<c; }};int main (){ Derived obj ('x'); return 0;}执行上面的程序净输出

    A.xy

    B.yx

    C.x

    D.y


    正确答案:A
    解析:在C++中,由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。在此题的程序中,在主函数main结束时,派生类Derived对象obj将被删除,所以就会调用对象的析构函数。先调用派生类的析构函数,输出x,然后调用基类的析构函数,输出y。

  • 第5题:

    有如下程序: #include<iostream> usingnamespacestd; classToy{ public: Toy(char*_n){strcpy(name,_n);count++;) ~Toy( ){count一一;) char*GetName( ){returnname;} staticintgetCount( ){returncount;) private: charname[10]; staticintcount; }; intToy::count=0; intmain( ){ Toyt1("snoopy"),t2("Mickey"),t3("Barbie"); tout<<t1.getCount( )<<endl: return0; ) 运行时的输出结果是( )。

    A.1

    B.2

    C.3

    D.运行时出错


    正确答案:C
    C。【解析】析构函数主要用于最后函数的释放空间。本题在已输出t1.getCount后才调用即不影响所输结果。