类和对象一.单项选择题1.在声明类时,关键字private、public和protected出现__ D).任意次数___。
A).至少一次B).至多一次C).public至少一次D).任意次数2.在声明类时省略权限隐含是____A) private________.A) private B) public C) protected D)任意的3.下列说法中错误的是_ C).在一个类中,只能定义一个构造函数____。
A).构造函数没有类型B).创建对象时构造函数自动被调用C).在一个类中,只能定义一个构造函数D).构造函数的函数名与类同名4..以下叙述中不正确的是___ A).类中的数据成员可以是私有或公有的,而类中的成员函数必须是公有的_。
A).类中的数据成员可以是私有或公有的,而类中的成员函数必须是公有的B).拷贝构造函数的作用是使用一个已经存在的对象去初始化一个新的同类的对象C).类中的构造函数可以重载,而析构函数不能重载D).构造函数和析构函数都应是类的公有成员函数5.下列_ C).友元函数_____不是类的成员函数。
A).构造函数B).析构函数C).友元函数D).拷贝构造函数6.通常拷贝初始化构造函数的参数是__ C)某个对象的引用名 ___。
A)某个对象名 B)某个对象的成员名C)某个对象的引用名 D)某个对象的指针名7.设Mclass是个类名,该拷贝(复制)初始化构造函数是__ D)Mclass(Mclass&)_____。
A)Mclass( )B) Mclass(Mclass)C)Mclass(Mclass *)D) Mclass(Mclass&)8.下列对析构函数的描述中,正确的是A)一个类中只能定义一个析构函数___。
A)一个类中只能定义一个析构函数B)析构函数名与类名不同;C)析构函数的定义只能在类体内D)析构函数可以有一个或多个参数9.以下对析构函数描述正确的是__ C)无形参,也不能重载____。
A).析构函数返回类型应是void B).函数体内不能有循环语句C)无形参,也不能重载D).函数体内必须有delete语句10.关于成员函数,以下叙述中不正确的是____ A).成员函数一定是内联函数___。
A).成员函数一定是内联函数B).成员函数可以重载C).成员函数的参数可以设置默认值D).成员函数可以是另一个类的友元函数11.在面向对象的程序设计中,作用域符(::)的功能是_ D).标识某个成员函数是属于哪个类的____。
A).标识作用域的级别B).指出作用域的大小C) 定义作用域的大小D).标识某个成员函数是属于哪个类的12.静态成员函数没有__ C).this指针____。
A).返回类型B).返回值C).this指针D).局部变量13..关于类的静态数据成员和静态成员函数,以下不正确的叙述是__ A).类外可以直接引用类的静态数据成员和静态成员函数_。
A).类外可以直接引用类的静态数据成员和静态成员函数B).类的静态数据成员可以在类的构造函数中使用C).类的其他函数可以调用类的静态成员函数D).类的静态数据成员被类的所有对象共享14.以下关于类和对象叙述正确的是_ C)对象是类的一个具体实例(实体)__。
A).一个类只能有一个对象B).一个对象可以属于几个不同的类C)对象是类的一个具体实例(实体)D)一个类中可以有本类的对象18._ C) 析构函数_______将在对象生存期结束时由系统自动调用。
A) 构造函数B) 成员变量函数C) 析构函数D) 虚函数19.下面关于友员函数的说法中,正确的是___D)友员函数可以直接访问本类的所有成员____ 。
A)友员函数是本类的一个成员函数B)友员函数可以通过对象访问本类的所有成员C)友员函数有this指针D)友员函数可以直接访问本类的所有成员20.假定AB为一个类名,则执行AB a(4),b[5],*p; 语句时,自动调用该类构造函数的次数为B)6 。
A)5 B)6 C)7 D)9二.阅读程序, 写出以下程序运行结果。
1.#include <iostream.h>class myclass{ int a,b;public:myclass (int i=0,int j=0);void show( );};myclass:: myclass(int i,int j){ a=i; b=j; }void myclass::show( ){ a+=b; b+=a;cout<<”a=”<<a<<" "<<”b=”<<b<<endl;}void main(){ myclass ob1;ob1.show();myclass ob2(2);ob2,show();myclass ob3(2,5);ob3.show();}运行结果:2.#include <iostream.h>class cube{ public:cube(int ht=2,int wd=5,int dp=3){ height=ht; width=wd; depth=dp;cout<<″depth=″<<depth<<″construncted called″<<endl;}~cube() { cout<<″depth=″<<depth<<″Destructed called″<<endl;}int volume() {return height *width*depth;}private: int height,width,depth;};void main(){ cube cone(10,20,15), ctwo;cout<<cone.volume()<<endl;cout<<ctwo.volume()<<endl;}运行结果:3.写出以下程序运行结果。
#include <iostream.h>class A{ int a,b;public:A(){ }A(int i,int j):a(i),b(j){ cout<<"constructor\n"; }~A() { cout<<a<<"distructor\n"; }};void main(){ A ob2(2,5);A ob1(ob2);}运行结果:4.当输入3、4和输入10、20时,写出以下程序输出结果。
#include <iostream.h>class TC{ private: double lead1, lead2,total;int p1,p2;public: TC( ){p1=15;p2=20;}TC(int x,int y){p1=x; p2=y; }void datap(){ cout<<″输入2个整数:″;cin>>lead1>>lead2;total=p1*lead1+p2*lead2;}void display() { cout<<″total=″<<total<<endl;} };void main(){ TC A,B(6,8);A.datap();A.display();}运行结果:5.写出以下程序运行结果。
#include<iostream.h>class value{private: int a;public: value(){a=1; cout<<”Default\n”; }value(int i){a=i; cout<<”constructure\n”; }void list( ){cout<<a<<“”; }~ value( ){ cout<<a<<”Destructure\n”; } };void main( ){ value data1[4];value data2[4]={10,20,30};for(int i=0;i<4;i++) data1[i].list();cout<<endl;for(i=0;i<4;i++) data2[i].list();cout<<endl;}运行结果:6.写出以下程序运行结果。
#include <iostream.h>class A{ public: A(int i,int j) { a=i; b=j; cout<<″constructor.\n″;} ~A( ) { cout<<″Destructor″<<a<<b<<endl;} private: int a,b;};void main(){ A *pa,*pb;pa=new A(4,6);pb=new A(10,15);delete pa;delete pb;}运行结果:7.写出以下程序运行结果。
#include <iostream.h>class count{ public:count () { count1++;}static int data () { return count1; }~count( ){ count1--; }private: static int count1;};int count ::count1=60;void main(){ count a,b,c,d,e;cout<<count:: data()<<endl;cout<<a.data()<<endl;cout<<e.data()<<endl;}运行结果:8.写出以下程序运行结果。
#include <iostream.h>class myclass{ private: int x,y;static long sum;public: myclass(int a,int b) { x=a;y=b;}void getxy(){ sum+=x*y; cout<<″sum=″<<sum<<endl; } };long myclass::sum=1;void main(){ myclass ob1(1,2);ob1·getxy();myclass ob2(3,4);ob2·getxy();myclass ob3(5,6);ob3·getxy();}运行结果:9.写出以下程序运行结果。