习题-类和对象
C++基础习题(选择,循环,类与对象)
1.11.C++概述例题5:C++的合法注释是()。
A./*This is a C program/* B.// This is a C programC.“This is a C program”D.//This is a C program//答案:B分析:单行注释常采用“//”,多行注释采用“/*”和“*/”。
单行注释也可采用“/*”和“*/”,但答案A书写格式错误,不能选答案A。
注释和字符串的区别,双引号内的字符为字符串。
不能选答案C。
单行注释不需要结束符“//”,如果有,只能作为注释的一部分存在。
也不能选答案D。
例题6:下面标识符中正确的是()。
A._abc B.3ab C.int D.+ab答案:A分析:C++的标识符由字母、下划线和数字组成,而且第一个字符不能为数字。
答案B第一个字符为数字不能选B。
标识符不能为关键字,不能选答案C。
答案D第一个字符不是字母或下划线,也不能选。
例题7:分析下列该程序的错误。
输入数据格式为:2,5(回车)。
main(){ int sum=0;int a,b;cout<<"input a,b:";cin>>a>>b;sum=a+b;cout<<sum<<endl;}本程序把输入的两个数据进行累加并输出结果。
输入数据格式为:2 5。
正确程序:#include <iostream> // 编译预处理命令,以“#”开头。
把系统已经定义好的输入//输出功能包含到本程序中。
using namespace std; //使用std 名字空间int main() // 程序的主函数{ // 主函数开始int sum=0; // 定义一个变量sum存放累加结果,并且赋初值为0int a,b; // 定义两个变量,保存输入值cout<<"input a,b:"; // 提示输入cin>>a>>b; // 使用基本输入设备cin输入两个变量值sum=a+b; // 进行累加,结果保存到sum变量cout<<sum<<endl; // 使用基本输出设备cout输出累加结果sum}分析:(1)没有使用编译预处理命令:#include。
《类与对象》课后习题(含答案)
问题一:程序执行结果是
问题二:本程序中,y、z 是 class Test{ public: static int Data; }; int Test::Data=100; //A void main(void) { Test t1,t2; t1.Data=200; t2.Data=300; //B //C
2、写出程序的输出结果。 #include <iostream> #include <cstring> using namespace std; class SomeClass { int One , Two; public: SomeClass(int a = 1, int b = 1) { One = a; Two = b; cout << "Structor" << endl; } SomeClass(SomeClass &obj) { { cout<<NumA<<'\t'<<"is Destructor."<<endl; } }; int main() { MyTestClass Myclass1(5), Myclass2.Print(); return 0; } 程序的运行结果为: Myclass2(Myclass1);
,第二行是
A.show( ); } 15 10 三、程序填空题
B.show( );
1、完成如下的类,在横线中填写合适的内容。 #include <iostream> #include <cstring> using namespace std; enum Esex{mid , man , woman};//枚举请自学 2.7 class Person { int Num; //编号 char Name[12]; //姓名 Esex Sex; //性别 float Weight; //体重 public: Person(int , char * , Esex , float); Person(); ~Person() {} void PrintInfo(); int Workdays(); }; Person::Person( { Num = id; int id ,char *name , Esex s , float w)
类和对象练习题
类和对象一、选择题1、下面对方法的作用描述不正确的是:( d )A、使程序结构清晰B、功能复用C、代码简洁D、重复代码2、方法内定义的变量:( b )A 、一定在方法内所有位置可见B、可能在方法内的局部位置可见C、在方法外可以使用D、在方法外可见3、方法的形参:(a)A、可以没有B、至少有一个C、必须定义多个形参D、只能是简单变量4、方法的调用:(c)A、必须是一条完整的语句B、只能是一个表达式C、可能是语句,也可能是表达式D、必须提供实际参数5、return 语句:( d)A、不能用来返回对象B、只可以返回数值C、方法都必须含有D、一个方法中可以有多个return 语句6、void 的含义:(d)A、方法体为空B、方法体没有意义C、定义方法时必须使用D、方法没有返回值7、main()方法的返回类型是:( c )A 、boolean B、int C、void D、static8、方法重载所涉及的方法:( a )A、有相同的名字B、参数个数必须不同C、参数类型必须不同D、返回类型必须不同9、下面关于类和对象之间关系的描述,正确的是( c )A、联接关系B、包含关系C、具体与抽象的关系D、类是对象的具体化10、下面关于java中类的说法哪个是不正确的( c )A、类体中只能有变量定义和成员方法的定义,不能有其他语句。
B、构造方法是类中的特殊方法。
C、类一定要声明为public的,才可以执行。
D、一个java文件中可以有多个class定义。
11、下列哪个类声明是正确的( d)A、public void H1{…} B 、public class Move(){…}C、public class void number{}D、public class Car{…}12、下面的方法声明中,哪个是正确的(c)A、public class methodName(){}B、public void int methodName(){}C、public void methodName(){}D、public void methodName{}13、下述哪些说法是不正确的?( b )A、实例变量是类的成员变量B、实例变量是用static关键字声明的C、方法变量在方法执行时创建D、方法变量在使用之前必须初始化14、下面对构造方法的描述不正确是( b)。
【习题】类与对象(2)
类和对象(2)【实验目的】:1. 掌握类的构造函数和析构函数的使用方法。
2. 掌握类的拷贝构造函数的使用方法。
【实验内容】:1.读以下程序,为下列程序添加注释,并给出程序运行结果。
并解释为什么得到这样的结果。
上机验证你的结果是否正确。
2. 完成下列要求。
1) 读以下程序,为下列程序添加注释,并给出程序运行结果。
并解释为什么得到这样的结果。
上机验证你的结果是否正确。
2) 将Coordinate 类中带有两个参数的构造函数进行修改,在函数体内添加下述语句:cout << “Constructor is called.\n “; 写出程序的运行结果,并解释输出的结果。
3) 按下列要求进行调试:在主函数体内,添加下述语句:Coordinate p4;Coordinate p5(2); 调试程序时会出现什么错误?为什么?如何对已有的构造函数进行适当的修改?4) 经过以上2)和3)步的修改后,结合运行结果分析:创建不同的对象时会调用不同的构造函数。
□Bine 1 udr< i n>・ t 「•豪 nAUflnf Z ・M!|J*(^ 3.(4; Ma 名% DiDniiriitft^tr<public:CDftrdinatfflnlr wl.iftt ・1)>7尸诵魯;詐杠话巧筑X-K.1 ir/; mot << "C-anWriiirtBr i<; callf i d An*1; 、Coord indtc (O OHHTI I imitvCi p) M"托口 构這函魏^Cwr Ji Mt« <) {eflirt <C C r struct or is c »llea\n ,,s}//折玛=比 int Get X( ){r&itur«i u; } lnt GrlYOi 『@f ii y ;y privet*:int » P V P :>sCeinriiinLdi-r;: Coo r flin^i t p( £n<i r rf i n-a t F fi p)*K S P-M ;FP-JI*£0Lkit<C"C*py -irdtiall 足Nt:左MI 3r )Et 『■亡>t<j 『 Is called^n^stfet FldtAf) {CQOTdlMtf p 12沁屛"谓用 穽蚩些1电世文PV21& coardln^if ”"":"弔1裤11|用想1构令1音餐P#聊刊 EDWdinatv ■$-從討忌二疣轴角將良呜造盛竅 Cuurdlndlt! >;Covrdin.ilr 闷7*的;M 丘ff if ■—介/■■-歆卜咗1洁> 牌 cout^C k |ii-(*<<p3 .G ^IX()«*• ,*«JK 3-fi&tV<<«) Vn B,; 亍ct.ru3. 假使在程序中已经声明了类point ,并建立了其对象 pl 和p4。
类和对象习题
(一)选择题1.设A为已定义的类名,下列声明A类的对象a的语句中正确的是()(A)public A a=new A( ); (B)public Aa=A( );(C)A a=new class( ); (D)a A;2.设X 、Y 均为已定义的类名,下列声明类X的对象x1的语句中正确的是()(A)public X x1= new Y( ); (B)X x1= X ( );(C)X x1=new X( ); (D)int X x1;3.下列方法定义中,正确的是()A) int x( int a,b ) { return (a-b); }B) double x( int a,int b) { int w; w=a-b; }C) double x( a,b ) { return b; }D) int x( int a,int b) { return a-b; }4.下列方法定义中,正确的是()A) void x( int a,int b ); { return (a-b); }B) x( int a,int b) { return a-b; }C) double x { return b; }D) int x( int a,int b) { return a+b; }5.下列方法定义中,不正确的是()A) float x( int a,int b ) { return (a-b); }B) int x( int a,int b) { return a-b; }C) int x( int a,int b ) { return a*b; }D) int x(int a,int b) { return 1.2*(a+b); }6.下列方法定义中,正确的是( A )A) int x( ){ char ch='a'; return (int)ch; }B) void x( ){ ...return true; }C) int x( ){ ...return true; }D) int x( int a, b){ return a+b; }7.下列方法定义中,方法头不正确的是()A)public int x( ){ ... }B)public static int x( double y ){ ... }C)void x( double d ) { ... }D)public static x( double a ){ ... }8.定义类头时,不可能用到的关键字是()A) class B)private C)extends D)public9.设A为已定义的类名,下列声明A类的对象a的语句中正确的是()A) A a=new A( ); B) public A a=A( );C) A a=new class( ); D) a A;10.设X 、Y 均为已定义的类名,下列声明类X的对象x1的语句中正确的是()A) X x1= new Y( ); B) X x1= X ( );C) X x1=new X( ); D) int X x1;11.设X 、Y为已定义的类名,下列声明X类的对象x1的语句中正确的是()A) static X x1; B) public X x1=new X(int 123);C) Y x1; D) X x1= X( );12.设i , j为类X中定义的int型变量名,下列X类的构造方法中不正确的是()A) void X(int k ){ i=k; } B) X(int k ){ i=k; }C) X(int m, int n ){ i=m; j=n; } D) X( ){i=0;j=0; }13.有一个类A,以下为其构造方法的声明,其中正确的是()A)public A(int x){...} ‘B)static A(int x){...}C)public a(int x){...}D)void A(int x){...}14.有一个类A,以下为其构造方法的声明,其中正确的是()A)void A(int x){...} B)A(int x){...}C)a(int x){...} D)void a(int x){...}15.设i、j、k为类X中定义的int型变量名,下列类X的构造方法中不正确的是()A) X( int m){ ... } B) void X( int m){ ... }C) X( int m, int n){ ... } D) X( int h,int m,int n){ ... }16.设i , j为类X中定义的double型变量名,下列X类的构造方法中不正确的是()A) double X(double k ){ i=k; return i; }C) X( ){i=6;j=8; }B) X(double m, double n ){ i=m; j=n; }D) X(double k ){ i=k; }17.设A为已定义的类名,下列创建A类的对象a的语句中正确的是()A)float A a; B public A a=A( );A a=new int( ); D A a=new A( );18.有一个类A,以下为其构造方法的声明,其中正确的是:()A)public A(int x){...}B)static A(int x){...}C)public a(int x){...}D)void A(int x){...}(二)简答题1.构造方法和一般的方法有何区别?2.面向对象的软件开发方法用什么把数据和基于数据的操作封装在一起?3.在一个类定义中,用什么描述对象的状态? 用什么描述对象的行为?4.什么方法是一个特殊的方法,用于对对象进行初始化?5.一个源程序文件中,能有多于一个的public 类吗?6.构造方法的方法名可由编程人员任意命名吗?7.类的构造方法名必须和类名相同吗?8.类的访问控制修饰符有哪些,访问权限各是什么?9.类的成员的访问控制修饰符有哪些,访问权限各是什么?10.包的作用是什么?如何声明一个包?11.如何导入一个包?12.定义类的访问器和设置器的形式是什么?(三)程序阅读和程序填空1.下面是一个类的定义,根据题目要求回答以下问题class B{ int x;char y;public B(int i,char j){ x=i; y=j; }public void show(){ S ystem.out.println("x="+x+"; y="+y); }public void methodC(int x1){ x=x+x1; y++; show();}}1)定义类B的一个对象b,将类中的变量x初始化为10、变量y初始化为’A’,请写出相应的语句。
C++类与对象习题及解答
类与对象习题 1类与对象习题一. 基本概念与基础知识自测题4.1 填空题5.1.1 引入类定义的关键字是。
类的成员函数通常指定为,类的数据成员通常指定为(3)。
指定为(4)的类成员可以在类对象所在域中的任何位置访问它们。
通常用类的(5)成员表示类的属性,用类的(6)成员表示类的操作。
答案:(1) class(2)公有的public(3)私有的private(4)公有的public(5)数据(6)函数4.1.2 类的访问限定符包括(1)、(2)和(3)。
私有数据通常由(4)函数来访问(读和写)。
这些函数统称为(5)。
答案:(1) public(公有的)(2) private(私有的)(3) protected(保护的)(4)公有的成员函数(5)类的接口4.1.3 通常在逻辑上,同一类的每个对象都有在物理上通常只有(2)代码区。
只有在(3)定义,并(4)的函数和加了关键字(5)的函数例外。
答案:(1)独立的(2)共用的(3)在类说明中(4)不包括循环等复杂结构(5) inline4.1.4 C++中支持三种域:、(4)中,全局域被包括在(5)中。
using指示符以关键字using开头,后面是关键字(6),最后是(7)。
这样表示以后在该名字空间中所有成员都(8)。
如不使用using指示符则在使用时要加::,称为(9)运算符。
答案:(1)局部域(local scope)(2)名字空间域(namespace scope)(3)类域(class scope)(4)局部域(5)名字空间域(6) namespace(7)名字空间名。
JAVA类与对象及数组习题及答案
JAVA 类和对象及数组习题一、选择题(1)下列构造方法的调用方式中,正确的是(D )——原因:在通过new实例化一个类对象时系统会自动调用该类相应的构造方法。
A.按照一般方法调用B。
由用户直接调用ﻫC.只能通过new 自动调用D。
被系统调用(2)在Java 中,能实现多重继承效果的方式是( C )——原因:一个类可以同时实现多个接口。
Java 接口反映了对象较高层次的抽象,还弥补了Java只支持单继承的不足,可用它来完成多继承的一些功能。
◻A。
内部类B.适配器 C.接口D.同步(3)int 型public 成员变量MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是( D )—原因:java 中定义常量用关键字final 来定义.A.public int MAX_LENGTH=100 B。
finalintMAX_LENGTH=100 ﻫC.public const int MAX_LENGTH=100D.p ublic final int MAX_LENGTH=100(4)下列叙述中,正确的是( A)—原因:Java 严格区分大小写,所以变量number 与Number 不相同;Java 中的注释方式除了“//”行注释之外还有段注释“/*---——--*/"和文档注释/**-—---- */。
Java 源文件中的public 类只能有一个。
◻A.声明变量时必须指定一个类型ﻫ B. Java认为变量number 与Number 相同ﻫC. Java中唯一的注释方式是"//"ﻫD。
源文件中public类可以有0 或多个(5)下列叙述中,错误的是(D )—原因:子类继承父类,并且可以有自己的成员变量和成员方法。
所以可以认为子类是父类的扩展。
◻A。
父类不能替代子类B.子类能够替代父类ﻫC。
子类继承父类D.父类包含子类(6)下列代码中,将引起编译错误的行是(B)—原因:定义float 型变量并对其初始化时,其值后面要加一个f。
第八章 类和对象 复习题知识讲解
第八章类和对象复习题第八章类和对象复习题1.系统为每个类提供一个this指针,在类的成员函数内,通过this指针可以间接访问这个类的( )所有成员C.友元类的public成员D.所有派生类中的public成员2.如果在class类的定义中既不指定private,也不指定public,则系统就默认为( )A. privateB. publicC. protectedD. 不确定3. 对静态数据成员的描述, 正确的是( )A. 静态数据成员可以在类体内进行初始化B. 静态数据成员不可以被类的对象调用C. 静态数据成员不能受private控制符的作用D. 静态数据成员可以直接用类名调用4. 下面叙述错误的是( )A. 基类的protected成员在派生类中仍然是protected的B. 基类的protected成员在public派生类中仍然是protected的C. 基类的protected成员在private派生类中是private的D. 基类的protected成员不能被派生类的对象访问5.对于友元函数的描述,正确的是( )A. 友元函数的实现必须在类的内部定义B. 友元函数是类的成员函数C. 友元函数破坏了类的封装性和隐藏性D. 友元函数不能访问类的私有成员6.关于内联函数的描述,正确的是( )A.使用内联函数可以缩短程序代码,减少占用的内存空间B.使用内联函数可以减少函数调用时入栈和出栈的时间和空间开销,但是会使程序的代码量增加C.内联函数只能在类的内部进行声明和定义,不能作为全局函数D.内联函数可以做虚函数7. 类是对象的( )A. 具体B. 抽象C. 封装D. 多态8. struct声明类时,若不作private或public声明,系统默认为( )A. privateB. publicC. protectedD. 不能确定9.引入内联函数的主要目的是( )A.缩短程序代码,少占用内存空间B.既可以保证程序的可读性,又能提高程序的运行效率C.占用内存空间少,执行速度快D.使程序的结构比较清晰10. 类的具体表现是通过定义来操作的。
java类和对象练习题
1.在如下所示的JAVA代码中,this关键字是指(B)。
public class Person{private String name;public void setName(String name){=name;}}(选择一项)(选择一项)A) Person类B) Person类自身对象的引用C) setName()方法的参数nameD) setName()方法2.以下对于JAVA中构造方法说法正确的是(C).(选择一项)A) 构造方法的名字可以与类名不一致B) 构造方法不能被重载C) 一个类必须包含至少一个构造方法D) 构造方法可以有返回值类型3.以下关于JAVA中的构造方法表述错误的是(B)。
(选择一项)A) 构造方法的名字和类名相同B) 构造方法不能被重载C) 构造方法的作用主要是在创建对象时执行一些初始化操作D) 构造方法没有返回值类型4.以下关于java中的方法重载说法错误的是(D)。
(选择一项)A) 重载的方法其方法名必须相同B) 重载的方法其参数个数或参数类型不同C) 构造方法可以被重载D) 成员方法不可以被重载5.在如下所示的Sample类中,共有( C)个构造方法public class Sample{private int x;private Sample(){x=1;}public void Sample(double f){this.x=(int)f;}public Sample(String s){}(选择一项)A) 4B) 3C) 2D) 16.构造方法重载的要素不包括(B)(选择一项)A) 方法名与类名相同B) 返回值类型不同C) 参数列表不同D) 在同一个类中7.给定如下JAVA代码,编译运行,结果将是(B)public class Sample{public double result(double d1,double d2){return d1<d2 ? d1 : d2;}public double result(int d1,double d2){return d1<d2 ? d1 : d2;}public double result(int d1,int d2){return d1-d2;}private int result(int i){return i;}public static void main(String [] args){Sample s=new Sample();System.out.print(s.result(2,3.0)+",");System.out.print(s.result(4.0,4.5)+",");System.out.print(s.result(10,9));}}(选择一项)A) 3.0 , 4.0, 1B) 2.0, 4.0, 1C) 3.0, 4.5, 1D) -1, 4.0, 18.给定如下Java代码,下列()方法可以加入到Sample类中,并且能够编译正确。
Java学习(二).习题
类和对象.习题1、基本概念题:1.什么叫类?什么叫对象?类是相似对象中共同属性和方法的集合体。
对象是类的实例。
2.对象怎样得到内存空间的?垃圾对象怎样回收的?对象的内存空间是在用户需要时,用new运算符创建的。
对象也有作用范围,我们把超出作用范围的对象(或称不再被使用的对象)称作垃圾对象。
在Java中,收集和释放内存是一个叫做自动垃圾回收线程的责任。
自动垃圾回收线程在系统空闲时自动运行,这个线程监视用户程序中所有对象的有效作用范围,当某个对象超出其作用范围时,该线程就对这样的对象做上垃圾对象标识,并在适当的时候一次性回收这些垃圾对象。
3.什么叫引用类型?对象是引用类型吗?所谓引用类型,是指该类型的标识符表示的是一片内存连续地址的首地址。
对象和数组一样,也是引用类型。
即对象定义后,系统将给对象标识符分配一个内存单元,用于存放实际对象在内存中的存放位置。
4.类的修饰符共有几种?分别是什么?类声明的<修饰符>分为访问控制符和类型说明符两部分,分别用来说明该类的访问权限以及该类是否为抽象类或最终类。
访问控制符:private、public和protected类型说明符:abstract和final5.共有几种形式的变量?这些变量各自的用途是什么?变量可分为:static:指明该成员变量是一个类成员变量final:指明该成员变量是常量transient:指明该成员变量是临时变量。
transient很少使用。
6.成员变量和成员方法的修饰符共有几种?各自的访问权限是什么?有private、public和protected三种private:修饰符表示该成员变量只能被该类本身访问,任何其他类都不能访问该成员变量。
protected:修饰符表示该成员变量除可以被该类本身和同一个包的类访问外,还可以被它的子类(包括同一个包中的子类和不同包中的子类)访问。
public:修饰符表示该成员变量可以被所有类访问。
c++第6章-类和对象1-习题
c++第6章-类和对象1
-习题课
胡凤珠
6.1 判断题 × 1.使用class定义的类,其默认的访问权限是公有的,使用struct定义 的类,其默认的访问权限是私有的。 × 2.类中的成员函数都是公有的,数据成员都是私有的。 × 3.定义在类体内的成员函数是内联函数,定义在类体外的成员函数不 能是内联函数。 √ 4.类定义后,它的成员个数及名称就不会再被改变了。 × 5.定义或说明对象时,系统会自动调用构造函数为创建的对象初始化。 如果类中没有定义任何构造函数时,就无法给定义的对象初始化。 √ 6.定义一个对象时,系统只为该对象的数据成员开辟内存空间,而成 员函数是同类对象共享的。 √ 7.对象成员的表示方法与结构变量成员的表示方法相同。 √ 8.创建对象时系统自动调用相应的构造函数为对象初始化,没有相应 的构造函数时,系统会自动生成。 √ 9.构造函数是一个其名与类名相同的特殊的成员函数。 × 10.析构函数是一个函数体为空的成员函数。
#include <iostream.h> class Rectangle { public: Rectangle(int a,int b)//2个参数的构造函数Rectangle { width=a; length=b; }//负责对对象的宽和长数据成员初始化 int Area()//求矩形的面积 { return width*length; } int Periment()//求矩形的周长 { return 2*(width+length); } void Changesize(int a,int b)//改变矩形的宽和长 { width=a; length=b; } void Print();//负责打印求的的面积和周长 private: int width,length; }; void Rectangle::Print() { cout<<"AREA="<<Area()<<endl; cout<<"PERIMENT="<<Periment()<<endl; } void main() { Rectangle r(5,8);//定义对象r 初始化 r.Print(); r.Changesize(3,9);//调用对象r的成员函数Changesize改变宽和长 r.Print(); }
(完整)C++面向对象程序设计习题 类与对象
类和对象(一)知识点:1.类与对象的概念,及两者的关系?2.类定义的格式,对象定义的格式,访问对象的成员的格式3.类中成员访问权限有哪几种,它们的特点?4。
如何对对象进行初始化?5。
构造函数与析构函数的特点,构造函数在哪些情况下被系统自动调用,析构函数什么情况下被调用;存在虚基类的派生类构造函数调用顺序?6.缺省构造函数的特点7。
拷贝构造函数的功能与特点8。
成员函数与内联函数的区别9.静态成员的概念与作用10.静态成员函数调用格式11.什么是友元,友元的作用12.作用域运算符的功能是什么?它的使用格式如何?13.满足成员函数重载的条件作业题一、选择填空1.在下列关键字中,用以说明类中公有成员的是( )。
A . public; B.private; C.protected; D.friend。
2.下列的各类函数中,( )不是类的成员函数.A.构造函数; B.析构函数; C.友员函数; D.拷贝初始化构造函数。
3.作用域运算符的功能是( )。
A.标识作用域的级别的;B.指出作用域的范围的;C.给出作用域的大小的;D.标识某个成员是属于哪个类的。
4.( )是不可以作为该类的成员的.A.自身类对象的指针;B.自身类的对象;C.自身类对象的引用;D.另一个类的对象。
5.( )不是构造函数的特征。
A.构造函数的函数名与类名相同;B.构造函数可以重载;C.构造函数可以重载设置缺省参数;D.构造函数必须指定类型说明。
6.()是析构函数的特征。
A.一个类中能定义一个析构函数;B.析构函数名与类名不同;C.析构函数的定义只能在类体内;D.析构函数可以有一个或多个参数。
7.通常的拷贝初始化构造的参数是()。
A.某个对象名;B.某个对象的成员名;C.某个对象的引用名;D.某个对象的指针名。
8.关于成员函数特征的下述描述中,( )是错误的。
A.成员函数一定是内联函数;B.成员函数可以重载;C.成员函数可以设置参数的缺省值;(只能一次)D.成员函数可以是静态的。
C++习题第06章 类和对象
第06章类和对象1.填空题(1)类和对象是面向对象程序设计的两个最本概念,__表示抽象的概念,而__则是__的实例化。
(2)类的成员包括__和__两类。
(3)类的数据成员__在类的定义时进行初始化。
(能/不能)(4)类成员的访问方式包括__、__和__3种,默认的访问方式是__。
(5)类的__是为类的所有对象所共有的。
(6)类中声明友元的关键是__。
(7)在类的外部定义成员函数时应在函数的前面加上__和__。
(8)访问对象的成员有__、__和__3种格式。
(9)__函数和__函数是类的两种特殊的成员函数。
__函数负责完成对象的创建和初始化工作,__函数负责完成对象消失时的内存清理工作。
(10)类的__成员和__成员需要初始化表的方式提供初值。
(11)类的静态数据成员的初始化应该写在__区域上,而且要指明__和__。
(12)常对象只能调用类中的__函数,该函数为类的__函数。
(13)类的私有成员和保护成员只能被该类的__函数和__函数访问。
(14)C++中的类的成员指针有__指针和__指针。
(15)类的每一个成员函数都有一个隐含定义的指针,称为__指针,它的类型是成员函数所属类的类型。
(16)对象之间成员级的拷贝,称为__,可以采用默认的拷贝的构造函数。
2.选择题(1)下列关于和对象的描述上,不正确的是()。
(A)一个对象只能属于一个类。
(B)对象是类的一个实例。
(C)一个类只能有一个对象。
(D)类和对象的关系与数据类型和变量的关系类似。
(2)若有如下类声明:class A{int a;}则A类的成员a是()。
(A)公有数据成员(B)公有的成员函数(C)私有数据成员(D)私有成员函数(3)下列关于成员函数的描述中,不正确的是()。
(A)成员函数可以重载。
(B)成员函数一定是内联函数(C)成员函数可以是静态的(D)成员函数可以设置参数的默认值(4)在类外定义成员函数时,需要在函数名前加上()。
(A)对象名(B)类名(C)类名和作用域运算符(D)作用域运算符(5)下列关于this指针的描述中,正确的是()。
JAVA 练习题第5章对象和类
)。 (A)内部类不能有自己的成员方法和成员变量 (B)内部类可用private或protected修饰符修饰 (C)内部类可以作为其他类的成员,而且可访问 它所在的类的成员 (D)除static内部类外,不能在类内声明static成 员
【解析】内部类也可以有自己的成员方法和变量。
答案为 A
函数。
super
2.类与对象的关系是( )。
答案为 A
(A)类是对象的抽象 (B)对象是类的抽象 (C)对象是类的子类 (D)类是对象的具体实例
3.下面哪一个是Java中不合法的标识符( )。
(A)$persons (C)_myVar
(B)twoNum (D)*pointFra bibliotek答案为 D
答案为 D
4.区分类中重载方法的依据是( A.形参列表的类型和顺序 B.不同的形参名称 C.返回值的类型不同 D.访问权限不同
)。
【解析】形参表的类型和顺序不同时区分重载方法的
唯一标志。
答案为 A
5.子类对象能否直接向其父类赋值?父类对象能否向其子类赋值?
( ) A.能,能 B.能,不能 C.不能,能 D.不能,不能 值给子类对象。
据成员。
答案为 C
4.有一个类B,下面为其构造方法的声明,正确 【解析】构造方法没有类型,且方法名与类名相同。
的是( )。 (A)void B(int x) (B)B(int x) {} (C)b(int x) {} (D)void b(int x) {}
{}
答案为 B
答案为 B
在创建对象时必须( )
A、先声明对象,然后才能使用对象 B、先声明对象,为对象分配内存空间,然后才能 使用对象 C、先声明对象,为对象分配内存空间,对对象初 始化,然后才能使用对象 D、上述说法都对
类与对象(练习题)
专题5 类与对象的创建和使用一、选择题1.方法内定义的变量(c )。
A.一定在方法内所有位置可见B.可能在方法的局部位置可见C.在方法外可以使用D.在方法外可见2.方法的形参(a )。
A.可以没有B.至少有一个C.必须定义多个形参D.只能是简单变量3.return语句(b)。
A.不能用来返回对象B.只可以返回数值C.方法都必须含有D.一个方法中可以有多个4.main()方法的返回值类型是(c )。
A.boolean B.intC.void D.static5.编译并运行下面的程序,运行结果是()。
public class A{public static void main(String args[]){A a=new A();a.method(8);}void method(int i){System.out.println(“int: ”+i);}void method(long i){System.out.println(“long: ”+i);}A.程序可以编译运行,输出结果为:“int: 8”B.程序可以编译运行,输出结果为:“long: 8”C.程序有编译错误,因为两个method()方法必须定义为静态(static)的D.程序可以编译运行,但是没有输出6.能作为类及其成员的修饰符是(d )。
A.interface B.classC.protected D.public7.下列方法定义中,方法头不正确的是()。
A.public static x(double a){…} B.public static int x(double y){…} C.void x(double d){…} D.public int x(){…}8.构造方法合时被调用(d )。
A.类定义时B.使用对象的变量时C.调用对象方法时D.创建对象时9.下列哪个类声明是正确的(a )。
A.public abstract class Car{…} B.abstract private move(){…} C.protected private number; D.abstract final class H1{…} 10.下列不属于面向对象程序设计的基本特征的是()。
JAVA基础 第3章类与对象_练习题
第3章类与对象一.选择题1.下列不属于面向对象编程的特性是(D)。
A.封装性 B. 继承性 C. 多态性 D. 编译执行2.下列类的声明中不合法的是(C)。
A. class People{…}B. class 植物{…}C. Class A{…}D. public class 共有类{…3.下列方法的声明中不合法的是(C)。
A. float area(){…}B. void area(){…}C. double area(d){…}D. int area(int r){…}4. 下列构造方法(构造器)的调用中正确的是(C)。
A. 按照一般的方法调用B. 由用户直接调用C. 只能通过new自动调用D. 被系统调用5.下列程序运行的结果是(A)。
class Book{int width;int length;}public class A{static void f(Book p){p.width=20;p.length=40;}public static void main(String args[]){Book b=new Book();b.width=10;b.length=20;f(b);System.out.print(" "+b.width);System.out.print(" "+b.length);}}A. 20 40B. 10 40C. 10 20D. 以上都不对6.下列程序运行的结果是(D)。
public class A{static void f(int y){y=y+10;}public static void main(String args[]){double x=10;f(x);System.out.println(x);}}精选文库A. 10B. 20C. 10.0D. 程序编译错误7.下列程序运行的结果是(C)。
public class A{int z=20;static void f(int y){y=z;System.out.println(y);}public static void main(String args[]){f(10);}}A. 10B. 20C. 程序编译错误D. 以上都不对8. 以下代码的输出结果为(C)。
12-4类与对象练习题面向对象 (1)
A)成员函数一定是内联函数B)成员函数可以重载
C)成员函数可以设置参数的默认值D)成员函数可以是静态的
14. C++中对于结构中定义的成员,其默认的访问权限为()。
A)publicB)protectedC)privateD) static
15.为了使类中的成员不被类的对象通过成员操作符来访问,则不能把该成员的访问权限设置为()。
A、对象是类的一个实例
B、任何一个对象只能属于某个的类
C、一个类只能有一个对象
D、类与对象的关系和数据类型与变量的关系相似
3、下列关于构造函数的描述中,错误的是()。
A、构造函数可以设置默认参数
B、构造函数在定义类对象时自动执行
C、构造函数可以是内联函数
D、构造函数不可以重载
4、下列有关析构函数的说法中,()是错误的。
a.disp( );
return0;
}
该程序运行后的输出结果是()。
A)displB)disp2C)displdisp2D)程序编译时出错
24.若有以下程序:
#include<iostream.h>
classsample
{inti;
public:
voidsetvalue(intm){i=m;}
voidfun(intm){i+=m;}
staticints;
voiddis()
{
cout<<s<<endl;
}
};
intsample::s=0;
voidmain(){
samplea(2),b(5),c(a);
a.add();
类与对象练习题
C++类与对象习题一.问答题1.解释public和private的作用,公有类型成员与私有类型成员有什么区别?2.Protected 关键字有何作用?3.构造函数和析构函数有什么作用?二.选择题1.不是构造函数的特征()。
A. 构造函数的函数名与类名相同。
B. 构造函数可以重载。
C.构造函数可以设置缺省参数。
D.构造函数必须指定类型说明。
2.是析构函数的特征()。
A. 析构函数名与类名不同。
B. 析构函数的定义只能在类体内。
C.析构函数可以有一个或多个参数。
D.一个类中只能定义一个析构函数。
3.关于成员函数的特征的描述中,()是错误的。
A. 成员函数一定是内联函数。
B. 成员函数可以重载。
C.成员函数可以设置缺省参数。
D.成员函数可以是静态的。
4.由于常对象不能被更新,因此_________A.通过常对象可以调用任何不改变对象值的成员函数B.通过常对象只能调用它的常成员函数C.通过常对象只能调用静态成员函数D.常对象的成员都是常成员5 .下列对函数的缺省参数的定义和描述及对函数的调用中错误的为______.A. void show(char *text, int length=-1,int color=0);B. int getcolor(int pal);void show(char *text,int length=-1,int color=getcolor(pal));C.在设置了函数的缺省参数后,调用函数的对应实参就可以省略。
D. show(“how are you!”, ,);6.下列有关静态成员的叙述中,_______是正确的。
A、静态数据成员不是所有对象所共享的B、在类中声明静态数据成员时可以进行初始化C、静态成员函数只能访问类的静态成员D、非静态成员函数不能访问类的静态成员1.7.下面对引用的描述中是错误的。
A. 引用是某个变量或对象的别名B. 建立引用时,要对它初始化C. 对引用初始化可以使用任意类型的变量D.引用与被引用的变量是同一个地址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题类和对象类的定义:1 定义类头时,不可能用到的关键字是( B )。
A) class B)private/protected/static C)extends/implementsD)public2.下列类定义中,不正确的是( C)。
A) class x { .... }B) class x extends y { .... }C) static class x implements y1,y2 { .... }D) public class x extends Applet { .... }3.下列类头定义中,错误的是(A)。
A)public x extends y {...} (少class)B) public class x extends y {...}C)class x extends y implements y1 {...}D)class x {...}创建声明对象:4.设A为已定义的类名,下列声明A类的对象a的语句中正确的是( D )。
A) float A a; B) public A a=A( );C) A a=new int( ); D) static A a=new A( );5.设A为已定义的类名,下列声明A类的对象a的语句中正确的是( A )。
A) public A a=new A( ); B) public A a=A( );C) A a=new class( ); D) a A;6.设X 、Y 均为已定义的类名,下列声明类X的对象x1的语句中正确的是( C )。
A) public X x1= new Y( ); B) X x1= X ( );C) X x1=new X( ); D) int X x1;7. 设X 、Y为已定义的类名,下列声明X类的对象x1的语句中正确的是( A )。
A) static X x1; B) public X x1=new X(int 123);C) Y x1; D) X x1= X( );8.通过类MyClass中的不含参数的构造方法,生成该类的一个对象obj,可通过以下语句实现:__MyClass obj=new MyClass();构造方法:9. 设i , j为类X中定义的int型变量名,下列X类的构造方法中不正确的是( A )。
A) void X(int k ){ i=k; } B) X(int k ){ i=k; }C) X(int m, int n ){ i=m; j=n; } D) X( ){i=0;j=0; }10.有一个类A(龙哥:方),以下为其构造方法的声明,其中正确的是( A)。
A)public A(int x){...} (迟:方) B)static A(int x){...}C)public a(int x){...} D)void A(int x){...}11.有一个类A,以下为其构造方法的声明,其中正确的是( B )。
A)void A(int x){...} B)A(int x){...}C)a(int x){...} D)void a(int x){...}12. 设i、j、k为类X中定义的int型变量名,下列类X的构造方法中不正确的是( B )。
A) X( int m){ ... } B) void X( int m){ ... }C) X( int m, int n){ ... } D) X( int h,int m,int n){ ... }13. 设i , j为类X中定义的double型变量名,下列X类的构造方法中不正确的是( A )。
A) double(没有返回值)X(double k ){ i=k; return i; }C) X( ){i=6;j=8; }B) X(double m, double n ){ i=m; j=n; }D) X(double k ){ i=k; }二、填空题1.下面是一个类的定义,请完成程序填空。
public class _____ Myclass _______{int x, y;Myclass ( int i, ___int j____) // 构造方法{x=i; y=j;}}14. 下面是一个类的定义,请将其补充完整。
class Student____{String name;int age;Student( ___String s , int i){name=s;age=i;}}2.下面是一个类的定义,请将其补充完整。
class ______myclass______ // 定义名为myclass的类{int var=666;int getvar()(有返回值int 必须用return 语句){ return var; }}三、程序阅读题1.下面是一个类的定义,根据题目要求回答以下问题.class B{private int x;private char y;public B(int i,char j){x=i; y=j;}public void show(){System.out.println("x="+x+"; y="+y);}public void methodC(int x){this.x=this.x+x;y++;show();}}(1)定义类B的一个对象b,将类中的变量x初始化为10、变量y初始化为’A’,请写出相应的语句。
Bb=new B(10,”A”)(2)若在(1)问基础上有方法调用语句:b.show()则输出如何?b.show(); 输出:x=10; y=A(3)若在(1)问基础上增加语句: b.methodC(1); 则输出为何?B.methodC(1); 输出:x=11; y=B2.阅读程序,回答问题。
public class Test52{static String str1="Hello, Java world! \t";static String str2="Hello, students! ";public static void main(String args[]){ System.out.print(str1); System.out.println(str2); }}问题:1)这是哪种形式的java 程序?2)程序的输出是什么?3.阅读下面程序,回答问题:public class Foo{int i;static String s;void imethod(){}static void smethod(){}}设f是Foo的一个实例,下列语句正确吗?System.out.println(f.i);System.out.println(f.s);f.imethod();f.smethod();System.out.println(Foo.i);System.out.println(Foo.s);Foo.imethod();Foo.smethod();四、简答题1. 面向对象的软件开发方法用什么把数据和基于数据的操作封装在一起?类2. 在一个类定义中,用什么描述对象的状态? 用什么描述对象的行为? 属性方法3. 什么方法是一个特殊的方法,用于对对象进行初始化?构造方法4. 一个源程序文件中,能有多于一个的public 类吗?不能5. 构造方法的方法名可由编程人员任意命名吗?不行!类名6. 类的构造方法名必须和类名相同吗?必须相同7. 构造函数有返回值吗?没有8. 构造函数可以重载吗?可以9. 如果一个类定义中没有定义构造方法,该类有构造函数吗?有!10. 如果一个类定义中已经定义了构造方法,java还会给它定义缺省的构造方法吗?不会11. 类的访问控制权有哪两种?Public 和默认12. 类的成员访问控制权有哪些?Public protected 默认private13 . 类的成员有哪些?属性方法五、编程题1、//基本类定义编写一个类,描述学生的学号、姓名、成绩。
学号用整型,成绩用浮点型,姓名用String类型。
编写一个测试类,测试学生类。
2、//基本类定义将上述类进行改写,学生拥有判断自己的成绩是否及格的功能。
并能够打印输出自己的姓名和是否及格的信息(方法名:printInfo())编写一个测试类,对学生类进行测试。
3.//构造方法:设计一个关于三角形的类Trival,其中的属性包括三角形的底di,三角形的高gao,方法包括:默认构造方法、为di和gao指定初值的构造方法、获取三角形面积findArea()。
4、//构造方法:编写一个类,描述桌子,包括以下几种属性:长、宽、高、颜色。
并且使该类具有这样的功能:在定制桌子(即创建桌子对象时),就可以同时指定桌子的长宽高来订制。
也可以同时指定长、宽、高、颜色来订制,也可单独指定桌子颜色来订制。
并编写一个测试类测试这几种定制方法。
5. //访问器方法:下面是Name类、Person类和Test类,请将Name类和Person类中所有private数据域的访问器方法填写完整。
class Name{private String firstName;//姓private String lastName;//名Name(String f,String l){firstName=f;lastName=l;}//填写访问器方法public String toString(){return firstName + lastName;}}class Person{private Name name;//姓名Person(Name n){name=n;}//填写访问器方法}class Test{public static void main(String[] args){Name theName=new Name("张","三");Person p=new Person(theName);System.out.println(p.getName());//输出结果:张三}}。