类和对象一、选择题1.下列有关类的说法不正确的是()。
A.对象是类的一个实例B.任何一个对象只能属于一个具体的类C.一个类只能有一个对象D.类与对象的关系和数据类型与变量的关系相似2.下列表达方式正确的是()。
A.class P{ B. class P{public: public:int x=15; int x;void show(){cout<<x;} void show(){cout<<x;} }; }C. class P{ D. class P{int f; public:}; int a;f=25; void Seta (int x) {a=x;}}3.下列有关类的说法不正确的是()。
A.类是一种用户自定义的数据类型B.只有类中的成员函数或类的友元函数才能存取类中的私有数据C.在类中(用class定义),如果不作特别说明,所有的数据均为私有数据D.在类中(用class定义),如果不作特别说明,所有的成员函数均为公有数据4.以下有关类与结构体的叙述不正确的是( )A. 结构体中只包含数据;类中封装了数据和操作B. 结构体的成员对外界通常是开放的;类的成员可以被隐藏C. 用struct不能声明一个类型名;而class可以声明一个类名D. 结构体成员默认为public;类成员默认为private5.以下有关类和对象的叙述不正确的是( )A. 任何一个对象都归属于一个具体的类B. 类与对象的关系和数据类型与变量的关系相似C. 类的数据成员不允许是另一个类的对象D. 一个类可以被实例化成多个对象6.设有定义:class person{int num;char name[10];public:void init(int n, char *m);...};person std[30];则以下叙述不正确的是( )A. std是一个含有30个元素的对象数组B. std数组中的每一个元素都是person类的对象C. std数组中的每一个元素都有自己的私有变量num和nameD. std数组中的每一个元素都有各自的成员函数init7.设有以下类的定义:class Ex{int x;public:void setx(int t=0);};若在类外定义成员函数setx(),以下定义形式中正确的是( )A. void setx(int t) { ... }B. void Ex::setx(int t) { ... }C. Ex::void setx(int t) { ... }D. void Ex::setx(){ ... }8.对于类中定义的成员,其默认的访问权限为()。
A.publicB. protectedC.privateD. static9.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为()。
A.publicB. protectedC.privateD. static9.通过指向对象的指针访问对象成员的一般形式是()。
A 指针名.成员名B 指针名->成员名10.访问权限只限于类成员访问是()。
A 私有成员B 公有成员11. 在C++中,函数原型不能标识( )A.函数的返回类型B.函数参数的个数C.函数参数类型D.函数的功能12. 在C++程序中,对象之间的相互通信通过( )A.继承实现B.调用成员函数实现C.封装实现D.函数重载实现13. 对于任意一个类,析构函数的个数最多为( )A.0B.1C.2D.314.下面说法正确的是( )A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C.类的内联函数必须在类体内定义D.类的内联函数必须在类体外通过加关键字inline定义二、填空题1.类的成员函数可以在定义,也可以在定义。
2.类是用户定义的类型,具有类类型的变量称作__________。
3.用于定义C++的类型的关键字有____________、_______和。
4.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为的成员;若要访问其他成员变量,需要通过函数或函数。
5.OOP技术由、、方法、消息和继承五个基本的概念所组成6.引入类定义的关键字是。
类的成员函数通常指定为,类的数据成员通常指定为。
指定为的类成员可以在类对象所在域中的任何位置访问它们。
通常用类的成员表示类的属性,用类的成员表示类的操作。
7.类的访问限定符包括、和。
私有数据通常由函数来访问(读和写)。
这些函数统称为。
8.通常在逻辑上,同一类的每个对象都有代码区,用以存储成员函数。
而在物理上通常只有代码区。
只有在定义,并的函数和加了关键字的函数例外。
9.无论是什么继承方式,派生类的成员不能访问基类_________属性的成员。
10.表达式cout<<end1还可表示为_cout<<” /n ”;__。
11.C++中语句const char * const p=〃hello〃;所定义的指针p和它所指的内容都不能被_______。
12.假定AB为一个类,则语句AB(AB&x);为该类_________函数的原型说明。
13.说明常成员函数时,关键字const写在成员函数的_________和_________之间。
14.在C++中,访问一个对象的成员所用的运算符是_________,访问一个指针所指向的对象的成员所用的运算符是_________。
三、写出以下程序的结果1.#include<iostream.h>class Sample{ int x,y;public:Sample(){x=y=0;}Sample(int a,int b){x=a;y=b;} ~Sample(){ if(x==y) cout<<"x=y"<<endl;else cout<<"x!=y"<<endl;}void disp(){ cout<<"x="<<x<<",y="<<y<<endl; } };void main(){ Sample s1(2,3);s1.disp(); }2.#include<iostream.h> class Sample{ int x;public:Sample(int a){ x=a;cout<<"constructingobject:x="<<x<<endl; } };void func(int n){ static Sample obj(n); } void main(){ func(1);func(10); }3.#include<iostream.h> class Sample{ int x,y;public:Sample(){x=y=0;}Sample(int a,int b){x=a;y=b;} void disp(){cout<<"x="<<x<<",y="<<y<<endl;} };void main(){ Sample s(2,3), *p=&s;p->disp();}4.#include<iostream.h>class Sample{ public:int x;int y;void disp(){cout<<"x="<<x<<",y="<<y<<endl;} }; void main(){ int Sample::*pc; Sample s;pc=&Sample::x; s.*pc=10;pc=&Sample::y; s.*pc=20;s.disp();}5.#include<iostream.h>class Sample{ int x,y;public:Sample(){x=y=0;}Sample(int a,int b){x=a;y=b;} void disp(){cout<<"x="<<x<<",y="<<y<<endl;} };void main(){ Sample s1,s2(2,3);s1.disp();s2.disp(); }6.#include<iostream.h>class Sample{ int A;static int B;public:Sample(int a){A=a,B+=a;}static void func(Sample s); }; void Sample::func(Sample s){cout<<"A="<<s.A<<",B="<<B<<endl;} int Sample::B=0;void main(){ Sample s1(2),s2(5);Sample::func(s1);Sample::func(s2);}7.#include<iostream.h>class Sample{ char c1,c2;public:Sample(char a){c2=(c1=a)-32;} void disp(){ cout<<c1<<"转换为"<<c2<<endl;} };void main(){ Sample a('a'),b('b');a.disp();b.disp();}8.#include<iostream.h> class Sample{ int x,y;public:Sample(){x=y=0;} Sample(int a,int b){x=a,y=b;} void disp(){cout<<"x="<<x<<",y="<<y<<endl; } };void main(){ Sample s1,s2(1,2),s3(10,20);Sample *Pa[3];Pa[0]=&s1;Pa[1]=&s2; Pa[2]=&s3;for(int i=0;i<3;i++) Pa[i]->disp();}9.#include<iostream.h> class Sample{ int x; int y;public:Sample(int a,int b){ x=a;y=b;}int getx(){return x;}int gety(){return y;} }; void main(){ int (Sample::*fp)();fp=&Sample::getx;Sample s(2,7);int v=(s.*fp)();fp=&Sample::gety;int t=(s.*fp)();cout<<"v="<<v<<",t="<<t<<endl; }10.#include<iostream.h> class Sample{ int x; int y;public:Sample(int a,int b){ x=a;y=b; }int getx(){return x;}int gety(){return y;} }; void main(){ int (Sample::*fp)();fp=&Sample::getx;Sample s(2,7),*p=&s;int v=(p->*fp)();fp=&Sample::gety;int t=(p->*fp)();cout<<"v="<<v<<",t="<<t<<endl; }11.#include <iostream.h>void main( ){int *a;int *&p=a;int b=10;p=&b;cout<<*a;}输出为:12.#include <iostream.h>template<class T>Tf(T*a,T*b,int n){Ts=(T)0;for(int i=0;i<n;i++) s+=a〔i〕*b〔i〕; return s;}void main(){double c 〔5〕={1.1,2.2,3.3,4.4,5.5},d〔5〕={10.0,100.0,1000.0}; cout<<f(c,d,5)<<endl;}输出为:253113. 运行下面的程序,写出当输入25,60时的输出结果。