有如下程序:#include<iostream>using namespace std;class Toy{public:Toy(char*_n){strcpy(name

题目
有如下程序: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。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有如下程序: #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后才调用即不影响所输结果。

第2题:

有如下程序:

#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后才调用即不影响所输结果。

第3题:

有如下程序:includeusing namespace std;class Name{char name[20];public:Name( ){s

有如下程序: #include<iostream> using namespace std; class Name{ char name[20]; public: Name( ){strepy(name," ");tout<<'?';} Name(char*fname){strcpy(name,fname);cout<<'?';} }; int main( ){ Name name[3]={Name("张三"),Name("李四")}; return 0; } 运行此程序输出符号“?”的个数是

A.0

B.1

C.2

D.3


正确答案:D
解析:Name name[3]定义了一个name对象数组,有3个元素,前2个调用Name(char *fname)构造函数,第三个元素调用Name( )构造函数,故打印3个“?”。

第4题:

有以下程序: #include 〈iostream〉 #include 〈string〉 using namespace std; class visited { private: int number; char *name; public: static int glob; void set mes(char *a); }; void visited::set mes(char *a) { name=new char[strlen(A) +1]; strcpy(name,A) ; number=++glob; } int visited::glob-O; int main() { visited person[10]; int i; char str[8]; for(i=0;i<5;i++) { cin>>str; person[i] .set mes(str); } cout<

A.5

B.4

C.3

D.2


正确答案:A
解析:本题考核静态数据成员的应用。分析程序:①类visited中,定义了两个私有成员:整型变量number和指针变量name。两个公有成员:静态数据变量glob和函数setmes()。②在函数setmes中,把传入的字符串保存在类的私有成员name中,并把静态数据成员glob自加,同时赋值给私有成员number。通过以上分析可知,函数setmes()用来记录输入的名字(即来访者的姓名),静态数据变量glob用来记录有多少来访者。在主函数中,输入5个字符串(即5个来访者的姓名)后,用来记录来访者数目的静态数据成员glob的值变成5。所以程序最后的输出结果是5。

第5题:

有如下程序: 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()运行的是基类的版本,分别输出汪汪叫和喵喵叫。

第6题:

有如下程序:

#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=O:

int main(){

Toy tl(“Snoopy”),t2(“Mickey”),t3(“Barbie”);

cout<<t1.getCount()<<endl;

return O:

}

运行时的输出结果是

A.1

B.2

C.3

D.运行时出错


正确答案:C
解析:count为Toy类的静态变量,每定义一个TOy类的对象即在构造函数中对count变量进行加1的操作。程序中一共定义了3个对象,所以count=3,故选C)。

第7题:

有以下程序:includeincludeusingnameSpacestd;classperson{ intage; Char*nam

有以下程序:

include <iostream>

include <string>

using nameSpace std;

class person

{

int age;

Char * name;

public:

person ( int i, Char * str )

{

int j;

j = strlen( str ) + 1;

name = new char[ j ];

strcpy( name, str );

age = i;

}

~person()

{

delete name;

cout<<"D";

}

void display()

{

cout<<name<<":"<<age;

}

};

int main()

{

person demo( 30,"Smith" );

demo.display();

return 0;

}

则该程序的输出结果为:【 】。


正确答案:Smith:30 D
Smith:30 D 解析:本题考核类与对象的操作。主函数中定义类person的对象 demo,并赋初值(30,"smith")。然后调用成员函数display()输出赋值结果,即Smitch:30。程序结束时demo对象的析构函数被调用,再输出“D”。

第8题:

如下程序的输出结果是______。 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;

}


正确答案:哈克汪汪叫 吉米喵喵叫
哈克汪汪叫 吉米喵喵叫

第9题:

( 27 )有如下程序:

#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 mail(){

Toy t1("Snoopy"),t2("Mickey"),t3("Barbie");

cout<<t1.getCount()<<endl;

return 0;

}

运行时的输出结果是

A ) 1

B ) 2

C ) 3

D )运行时出错


正确答案:C