《C++(练习)第6章,类与对象.doc》由会员分享,可在线阅读,更多相关《C++(练习)第6章,类与对象.doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一,单选题1. 假定MyCIass为一个类,那么下列的函数说明中,( )为该类的析构函数。Avoid MyClass( );BMyClass(int n);CMyClass( );DMyClass( );参考答案D2. 有如下类声明: class TestClass int i;private: int j; protected: int k;public: int m,n;其中,私有成员的数量为( )。A 0 B 1C 2 D 3参考答案C3. 列有关类的说法,不正确的是_。A 类是一种用户自定义的数据类型B 只有类中的成员函数或类的友元函数才能存取类中的私有数据 C 在类中,如果不作特别说
2、明,所有的数据成员均为私有数据成员D 在类中,如果不作特别说明,所有的成员均为公有成员参考答案D4. 关于成员函数特征的下述描述中,错误的是( )。A 成员函数一定是内联函数B 成员函数可以重载C 成员函数可以设置参数的默认值D 成员函数可以是静态的参考答案A5. 一个类的友元函数能够访问该类的_。A 私有成员B 保护成员C 公有成员D 所有成员参考答案D6. 下列关于C+语言类的描述中错误的是_。A 类用于描述事物的属性和对事物的操作B 类与类之间通过封装而具有明确的独立性C 类与类之间必须是平等的关系,而不能组成层次结构D 类与类之间可以通过一些方法进行通信和联络参考答案C7. 类的概念是
3、( ) 。A 对象的抽象。B 同一类记录的集合。C 同一类数据的集合。D 所有对象的集合。参考答案A8. 如果没有显式定义构造函数(包括复制构造函数),C+编译器就( )。A 出现编译错误B 没有构造函数C 必须显示定义D 隐式定义默认的构造函数参考答案D11. 下列关于构造函数说法不正确的是( )。A 构造函数必须与类同名B 构造函数可以省略不写C 构造函数必须有返回值D 在构造函数中可以对类中的成员进行初始化参考答案C12. 下列有关类的说法,不正确的是( )。A 类是一种用户自定义的数据类型B 只有类中的成员函数或类的友元函数才能存取类中的私有数据C 在类中,如果不作特别说明,所有的数据
4、均为私有数据D 在类中,如果不作特别说明,所有的成员函数均为公有有数据参考答案D13. 一个类的友元函数能够访问该类的( )。A 私有成员B 保护成员C 公有成员D 所有成员参考答案D14. 有关类与对象的说法不正确的是( )。A 类是同类对象的定义B 对象是类的具体化实例C 类包含对象的具体属性值D 类包含同类对象的属性名参考答案C15. 对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )。A 公有类型B 私有类型C 保护类型D 友元类型参考答案D16. 在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是( )
5、。A 友元函数B 虚函数C 构造函数D 析构函数参考答案C17. 下述静态数据成员的特征中,( )是错误的。A 说明静态数据成员时前边要加修饰符staticB 静态数据成员要在类体外进行初始化C 引用静态数据成员时,要在静态数据成员名前加和作用域运算符D 静态数据成员不是所有对象所共用的参考答案D18. 下列有关类的说法不正确的是( )。 A 对象是类的一个实例B 任何一个对象只能属于一个具体的类C 一个类只能有一个对象D 类与对象的关系和数据类型与变量的关系相似参考答案C19. 为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为( )。 A publicB
6、protectedC privateD static参考答案A 20. ()是类的所用对象共享的成员,而不是某个对象的成员。A 静态成员B 动态成员C 内联函数D 析构函数参考答案A21. 下列关于析构函数的描述中,错误的是()。A 类中有且仅有一个析构函数B 析构函数可以有形参C 析构函数没有函数返回类型D 析构函数在对象消失时被自动执行参考答案B22. 下列对类的构造函数和析构函数的描述中,正确的是A 构造函数可以重载,析构函数不能重载B 构造函数不能重载,析构函数可以重载C 构造函数可以重载,析构函数也可以重载D 构造函数不能重载,析构函数也不能重载参考答案A23. 面向对象程序设计将数
7、据与( )放在一起,作为一个相互依存、不可分割的整体来处理。A .对数据的操作 B 信息C 数据隐藏 D 数据抽象参考答案A二填空题1.面向对象的模型中,最基本的概念是对象和_1_。参考答案1:类2. 若一个3位整数的各位数字的立方和等于1099,则称该数为A数,求全部A数之和。#includeclass number private: int a, b; /存放三位数的范围public: void mn(int m, int n) a=m; b=n; /为数据成员赋值 void print() int m1 = 0, m2 = 0, m3 = 0, m = 0, sum=0; for ( m
8、 = a; m = b; m+ ) m1 = _1_ ; /求三位数的个位 m2 = (m / 10) % 10; /求三位数的十位 m3 = m/100; /求三位数的百位 if ( m1*m1*m1 + m2*m2*m2+ m3*m3*m3 = 1099 ) sum+=m; coutsumendl; ;void main() number ob; _2_ ob.print();参考答案1:m%10 或 m-m/10*102:ob.mn(100,999);3. 类是用户定义的类型,具有类类型的变量称作_1_。参考答案1:对象4. 完成以下程序,使程序执行结果为100。#include cla
9、ss Testpublic: Test(int aa) _1_ ; int GetX() _2_ ; private: int X;void main() Test xx(100); coutxx.GetX()endl;参考答案1:X=aa 或 X=aa;2:return X 或 return X;5. 已知main函数中有A类对象ab,程序的运行结果为12,请完成以下代码:#includeclass Apublic:int x,y;void display()coutxy;void main( ) _1_ ;ab.x=1;_2_ ; ab.display( ); 参考答案1:A ab 或 A
10、 ab;2:ab.y=26. 如果不做特殊说明,类成员的默认访问权限是_1_。参考答案1:私有 或 private7. 在面向过程的程序设计中,程序功能模块由函数实现;在面向对象的程序设计中,程序模块由_1_实现。参考答案1:类8. 已知yf(40)/f(30)+f(20),当f(n)122334n(n1)时,求y的值。#includeclass calculate public: float f(int n) int i; float sum = 0; for(i = 1; i = n; i+) sum += i * (i + 1);return sum; void print() floa
11、t y = 0.0; y = _1_; coutyendl; ;void main() calculate ob;_2_ 参考答案1:f(40)/(f(30)+f(20) 或 f(40)/(f(20)+f(30)2:ob.print();9. 以下程序的功能是:找出数组中的最小值并输出,补充程序。#includeclass sample int x;public: void setx( int x0) x=x0; friend int fun( sample b , int n) int m=_1_; for(int i=0; in;i+) if (bi.xm) m=_2_; return m
12、;void main()sample a6; int arr=12,6,21,7,10,9;for( int i=0;i6;i+) ai.setx(arri);coutfun(_3_)endl;参考答案1:b0.x 或 b0.x;2:bi.x 或 bi.x;3:a,610. 在C+类的定义中,利用_1_描述对象的特征。参考答案1:属性 或 数据成员12. 友元函数不是当前类的_1_,而是独立于当前类的_2_。参考答案1:成员函数2:外部函数13. 在未指定访问权限时,结构中的成员被默认为_1_,而类中的成员被默认为_2_。参考答案1:公有成员2:私有成员14. 常数据成员的初始化只能通过构造函
13、数的_1_。参考答案1:成员初始化列表三问答题1.如下程序的运行结果是:#include class A int a;public: A(int aa):a(aa) couta,; set_a(int x) a=x; A( );A:A( ) coutaendl; void main( ) A x(2); x.set_a(10);参考答案2,102. 阅读程序,严格按输出顺序与格式写出程序运行结果。#include class Point int xVal, yVal;public: Point( ) coutno value setendl; Point(int x,int y) xVal=x
14、;yVal=y; void show( ) coutx=xValy=yValendl; ;void main( ) Point a, * p=new Point; Point b(1,2); *p=b; (*p).show( ); 参考答案no value setno value setx=1y=23. #include class Sampleint x;public:Sample();void setx(int i)x=i;friend int fun(Sample B,int n) int m=0;for (int i=0;im) m=Bi.x;return m;void main()
15、Sample A10;int Arr=90,87,42,78,97,84,60,55,78,65;for(int i=0;i10;i+)Ai.setx(Arri);coutfun(A,10)endl;参考答案974. #include class myclass int a,b;public:void init(int i, int j) a=i; b=j;friend int sum(myclass x);int sum( myclass x)return x.a+x.b; void main() myclass y;y.init(37,41);coutsum(y)endl;参考答案785.
16、 #include class Sample char c1,c2;public: Sample(char a)c2=(c1=a)-32; void disp() coutc1转换为c2endl; ;void main() Sample a(a); a.disp();参考答案a转换为A6. 如下程序的运行结果是: #include using namespace std; class Base public: virtual void print()coutB;class Derived:public Basepublic:void print()coutprint(); pd-print()
17、; coutendl; return 0; 参考答案DD7. #includeclass numberprivate: int val;public: number(int i)val=i; operator int( );number:operator int( ) /coutoperator int().valendl; return val;void main( ) number n(15); /调用有一个参数的构造函数 int i=n; /调用operator int() 类对象赋值给整型变量 coutiendl; i+=n; /调用operator int() coutiendl;
18、coutint(n)endl; /调用operator int()参考答案153015 7. 阅读以下程序:#includeusing namespace std;class A int a,b;public: A( ); A(int i, int j); void print( );A:A( ) a=5; b=10; A:A(int i, int j) a=i,b=j; void A:print( ) couta=a,b=bt; void main( ) A a1, a2(15, 18); a1.print( ); a2.print( );写出程序运行后a1.a与a2.b的值。(答案格式:a
19、1.a空格a2.b,例如:3 5)参考答案5 188. #include class myclass int a,b;public:void init(int i, int j) a=i; b=j;friend int sum(myclass x);int sum( myclass x)return x.a+x.b; void main() myclass y;y.init(37,41);coutsum(y)endl;参考答案789. #include class Countpublic:Count() count+;static int HM()return count;Count() co
20、unt-;private:static int count;int Count:count=10;void main()Count c1,c2,c3,c4;coutCount:HM(),c1.HM()endl;参考答案14,1410. #include class Apublic:A(double t,double r) Total=t; Rate=r;friend double Count(A &a)a.Total +=a.Rate*a.Total;return a.Total;private:double Total,Rate;void main() A a1(100.0,0.35),a2
21、(200.0,0.02);coutCount(a1),Count(a2)endl;参考答案135,20411. #include class Sampleprivate:int i;static int k;public:Sample();void Show();int Sample:k=0;Sample:Sample()i=0; k+;void Sample:Show()couti=i,k=kendl;void main() Sample a;a.Show();Sample b;b.Show();参考答案i=0,k=1i=0,k=212. #includeusing namespace st
22、d;class VACpublic: int f( ) const return 3; int f( ) return 5; ;int main( ) VAC v1; const VAC v2; coutv1.f()v2.f(); return 0; 写出其运行时的输出结果。参考答案5313. 有如下程序:#includeclass Conchar ID;public:Con()ID=A;cout1;Con(char id)ID=id;cout2;char getID()return ID;int main()Con c1;coutc1.getID();Con c2(B);coutc2.getID();return 0;写出此程序的运行结果。参考答案1A2B四编程题