面向对象程序设计复习资料

合集下载

《面向对象程序的设计》复习资料全

《面向对象程序的设计》复习资料全

《面向对象程序设计》课程期末复习资料《面向对象程序设计》课程讲稿章节目录:第一章、C++基础(16个知识点)01 计算机求解问题的过程02 编程的步骤03 程序设计方法04 程序设计基本概念05 C++程序集成开发环境简介06 C++程序实例07 C++源程序的组成08 C++源程序的组成元素09 C++与C的主要差异–符号常量和标准输入输出流10 C++与C的主要差异–内联函数11 C++与C的主要差异–带默认形参值的函数12 C++与C的主要差异–函数重载13 C++与C的主要差异–动态内存分配和释放14 C++与C的主要差异–动态内存分配和释放程序实例15 C++与C的主要差异–引用和返回引用的函数16 C++与C的主要差异–函数的引用调用第二章、面向对象方法(27个知识点)01 面向对象方法基本概念–对象、类、实例和消息02 面向对象方法基本概念–封装、继承和多态03 类的定义04 构造函数05 对象的定义和访问06 对象的定义和访问程序实例07 类成员的访问控制08 类成员的访问控制程序实例09 析构函数11 类声明和类实现的分离12 类的常量成员13 类的静态数据成员14 类的静态成员函数15 this指针16 类的友元17 类的对象成员–基本概念18 类的对象成员–对象成员的声明、初始化和访问19 自定义类的运算符重载概述20 类成员函数形式的运算符重载21 类友元形式的运算符重载22 赋值运算符和下标运算符重载程序实例23 类设计实例24 面向对象方法程序实例–类和对象的基本定义、构造函数和析构函数25 面向对象方法程序实例–静态成员和多文件结构26 面向对象方法程序实例–友元和运算符重载27 面向对象方法程序实例–对象成员第三章、继承与多态(17个知识点)01 继承概述02 派生类定义03 派生类构造函数和析构函数04 派生类构造函数和析构函数程序实例05 函数重定义和派生类的继承方式06 多重继承下的派生类定义07 多重继承中的二义性问题08 虚拟继承和虚基类09 类型兼容10 多态性的概念和实现原理11 虚函数13 纯虚函数和抽象类14 继承与多态程序实例–派生类定义和函数重定义15 继承与多态程序实例–多重继承16 继承与多态程序实例–虚拟继承和虚函数17 继承与多态程序实例–抽象类和纯虚函数第四章、输入输出流(16个知识点)01 输入输出流概述02 输入输出流对象03 输入输出流的插入和提取运算符04 输入输出流的插入和提取运算符程序实例05 输入输出流的put函数06 输入输出流的get函数07 输入输出流的getline函数08 输入输出流的write函数09 输入输出流的read函数10 输入输出流的write、read函数程序实例11 文件随机读写概述和相关函数12 文件随机读写程序实例13 自定义类型数据的标准输入输出和文本文件输入输出14 自定义类型数据的二进制文件输入输出15 输入输出流程序实例–输入输出流操作16 输入输出流程序实例–插入运算符和提取运算符重载第五章、模板(7个知识点)01 函数模板的定义和使用02 函数模板程序实例03 类模板的定义04 类模板的使用05 类模板的静态成员06 模板程序实例–函数模板07 模板程序实例–类模板一、客观部分:(单项选择、多项选择、不定项选择、判断)(一)、选择部分1、面向对象方法的基本观点是一切系统都是由( C )构成的。

面向对象程序设计考试复习资料

面向对象程序设计考试复习资料

面向对象程序设计1. 代码public class Test {public int aMethod() {static int i = 0;i++;return i;}public static void main (String args[]) {Test test = new Test();test.aMethod();int j = test.aMethod();System.out.println(j);}}输出结果为编译失败,static用来修饰全局变量,不能修饰局部变量2. 下面的程序中,temp的最终值是1long temp=(int)3.9;temp%=2;3.在J2EE中属于Web层的组件有:Servlet4. 派生类中的成员不能直接访问基类中的private成员。

5.以public修饰的类如:public class Car{…}则Car可被其它程序包中的类使用6.paint( )方法使用 Graphics 类型的参数7. 下面数据插入语言(DIL)不属于SQL语句的子类8. 实现运行时的多态性要使用虚函数。

9. 创建对象时构造函数被调用10. 如下代码:class Base {Base() { System.out.print(“Base”); }}public class Alpha extends Base {public static void main( String[] args ) {new Alpha();-----调用父类无参的构造方法new Base();}}结果是BaseBase。

11.如果希望控件在界面上按表格行分列排列,应使用GridLayout布局管理器12. 声明抽象方法不可写出大括号叙述正确13. 线程交互中不提倡使用stop()方法14.当检索一个压缩文件时,首先要建立压缩文件输入流对象,该对象以 FileInputStream 对象为参数15.jsp指令中isELIgnored="boolean"的意思是决定是否支持EL表示。

面向对象程序设计(Java)总复习

面向对象程序设计(Java)总复习
应用场景
需要频繁地创建和销毁同一对象实例的场合,如日志 记录器、缓存对象等。
工厂模式
定义
提供一个创建对象的最佳方 式。
实现方式
简单工厂、工厂方法、抽象 工厂。
应用场景
当需要根据不同的参数条件 创建不同的对象时,如数据 库连接池、对象序列化等。
观察者模式
定义
定义了对象之间的依赖关系,使得当一个对象状态发生改变时,其 相关依赖对象能够得到通知并自动更新。
for语句
用于循环遍历数组或集合等数据结 构。
04
函数与方法
函数
函数是执行特定任务的代码块,可以接受输入参数并返回结果。在 Java中,函数也被称为方法。
方法重载
在同一类中可以定义多个同名方法,只要它们的参数列表不同即可。
方法覆盖
子类可以定义与父类同名的方法,只要它们的参数列表和返回类型相 同即可。
集合框架
集合框架概述
List接口及其实现
Java集合框架提供了用于存储和操作对象 集合的接口和类。它包括List、Set、 Queue和Map等接口以及实现这些接口的 类。
Set接口及其实现
List接口表示有序集合,可以包含重复元素 。Java提供了ArrayList、LinkedList等类来 实现List接口。
String类与正则表达式
字符串的比较
字符串的替换
字符串的截取
01
03 02
String类与正则表达式
01
正则表达式
02
正则表达式的概念
03
正则表达式的使用方法
String类与正则表达式
正则表达式的匹配规则
正则表达式的特殊字符
IO流与文件操作

Java面向对象程序设计复习资料

Java面向对象程序设计复习资料

1.标识符合法判断2.数组定义与引用3.整除、求余操作4.字符串基本操作5.表达式合法性判断、三元表达式用法及简单计算【A ?B :C】6.注释用法,单行注释、多行注释和文档注释各自语法及用途7.构造方法以及作用【带参数和不带参数的构造方法应用以及子类调用父类构造方法】8.类及其属性、方法修饰符【访问范围】9.修饰符混用:abstract不能与final并列修饰同一个类【正确】;abstract类中不可以有private的成员【正确】;abstract方法必须在abstract类中【错误】;static方法中能处理非static的属性【正确】10.抽象方法抽象类11.接口的继承特点,类的继承【子类访问父类变量和方法问题、变量隐藏】特点、多态、子类调用父类相同名字的变量和方法。

12.创建对象数量问题:【1】String s1="bc"; String s2="bc";【2】Strings1="bc"; String s2=new String("bc");13.方法返回类型及方法的定义14.final变量及特点15.静态变量和非静态变量16.abstract和final修饰符17.综合【一般类的编写:成员变量和成员方法,抽象类使用、接口定义及使用、水仙花数、素数、回文数等】18.讨论分析(1)如果p是父类Parent的对象,而c是子类Child的对象,则语句c=p是正确的。

(2)最终类不能派生子类,最终方法不能被覆盖。

(3)Java中的String类的对象既可以是字符串常量,也可以是字符串变量。

(4)Java中数组的元素可以是简单数据类型的量,也可以是某一类的对象。

(5)设String对象s=”Hello ”,运行语句System.out.println(s.concat(“World!”));后String对象s的内容为”Hello world!”,所以语句输出为Hello world!(6)System类不能实例化,即不能创建System类的对象。

何冰-面向对象程序设计-复习题(带部分复习资料)

何冰-面向对象程序设计-复习题(带部分复习资料)

、单项选择题1引入内联函数的主要目的是A)缩短程序代码,少占用内存空间B.既可以保证程序的可读性,又能提高程序的运行效率C)提高程序的执行速度D)使程序的结构比较清晰2重载函数是A)以函数参数来区分,而不用函数的返回值来区分不同的函数B.以函数的返回值来区分,而不用函数参数来区分不同的函数C)参数表完全相同而返回值类型不同的两个或多个同名函数D)参数表和返回值类型都必须是不同的两个或多个同名函数3有函数原型void fun2 (int *), 下面选项中,正确的调用是A)double x = 2.17; fun2 (&x); C) int a = 15; fun2 (a*3.14);B) int b = 100; fun2 (& b); D) fun2 (256);4在C++中,要实现动态联编,必须使用()调用虚函数。

A)类名B)派生类指针C)对象名D)基类指针5在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是A)派生类的对象可以直接访问基类中的所有成员B)派生类的对象可以初始化基类的引用C)派生类的对象可以赋给基类的对象D)派生类的对象的地址可以赋给指向基类的指针6设置虚基类的目的是A)消除两义性B)简化程序C)提高运行效率D)减少目标代码7关于构造函数,以下说法错误的是A)构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。

在对象创建时由系统自动调用。

B)基类的构造函数可以被派生类所继承。

C)如果程序中未声明,则系统自动产生出一个缺省形式的构造函数。

D)允许为内联函数、重载函数、带缺省形参值的函数。

8下列关于C++函数的说明中,正确的是A)内联函数就是定义在另一个函数体内部的函数B)函数体的最后一条语句必须是return语句C)标准C++要求在调用一个函数之前,必须先声明其原型D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式9由于常对象不能被更新,因此A) 通过常对象只能调用它的常成员函数B) 通过常对象只能调用静态成员函数C) 常对象的成员都是常成员D) 通过常对象可以调用任何不改变对象值的成员函数10下列关于虚函数的说明中,正确的是A)从虚基类继承的函数都是虚函数B)虚函数不得是静态成员函数C)只能通过指针或引用调用虚函数D)抽象类中的成员函数都是虚函数11运算符重载是对已有的运算符赋予多重含义,因此A) 可以对基本类型(如int类型)的数据,重新定义“ + 运算符的含义B) 可以改变一个已有运算符的优先级和操作数个数C) 只能重载C++中已经有的运算符,不能定义新运算符D) C++中已经有的所有运算符都可以重载12模板对类型的参数化提供了很好的支持,因此A) 类模板的主要作用是生成抽象类B) 类模板实例化时,编译器将根据给出的模板实参生成一个类C) 在类模板中的数据成员都具有同样类型D) 类模板中的成员函数都没有返回值13下列符号中可以用作C++标识符的是A)_radius B)foo~bar C)else D)3room 14下列语句中,错误的是A)c onst int buffer=256; B)c onst int temp;C)const double *po int; D)const double *rt =new double(5.5);15有如下程序:int x=3;do{x -= 2;cout«x;}while(!(--x));执行这个程序的输出结果是A) 1 B) 3 0C) l-2 D)死循环16有如下程序:#in clude <iostream>using n amespace std;int mai n(){int *p;*p = 9;cout<<"The value at p:"«*p; return 0;}编译运行程序将出现的情况是A) 够编译时出现语法错误,不能生成可执行文件B) 运行时一定输出:The value at p: 9C) 运行时一定输出:The value at p: *9D) 运行时有可能出错17有如下程序:#i nclude <iostream>using n amespace std;int mai n(){void fun cti on( double val);double val;function( val);cout«val;return 0;}void fun cti on( double val){val = 3;}编译运行这个程序将出现的情况是A)编译出错,无法运行B)输出:3C)输出:3.0 D)输出一个不确定的数18有如下类定义:class AA{int a;public:int getRef() const{return &a;} // ①int getValue() con st{return a;} // ②void set(i nt n) con st{a=n;} // ③frie nd void show(AA aa) const {cout<<aa; } // ④ }; 其中的四个函数定义中正确的是A)①B)②C)③D)④19有如下程序:#in clude <iostream>using n amespace stdclass Base{public:void fun() {cout<v"Base::fu n"v<e ndl;};class Derived:public Base{public:void fun(){cout<<"Derived::f un"«en dl;}};int mai n(){Derived d;d.fu n();return 0;}已知其执行后的输出结果为:Base::fu nDerived::fu n则程序中下划线处应填入的语句是A) Base.fu n(); B)Base::fu n() C)Base->fu n() D)fu n(); 20下面是重载为非成员函数的运算符函数原型,其中错误的是A) Fracti on operator + (Fracti on, Fract ion);B) Fractio n operator - (Fracti on);C) Fract ion& operator = (Fracti on&, Fract ion);D) Fract ion& operator += (Fract ion&, Fract ion);21有如下类定义:class Foo{public:Foo(int v):value(v){} // ①~Foo(){} // ②private:Foo(){} // ③in t value = 0; 〃④};其中存在语法错误的行是A)①B)②C)③D)④22有如下类定义:class Point{int x_, y_;public:Poi nt():x_(0), y_(0){}Poi nt(i nt x, i nt y = 0):x_(x),y_(y){}};若执行语句Point a(2), b[3], *c[4];则Point类的构造函数被调用的次数是A)2次B)3次C)4次D)5次23有如下程序:#i nclude <iostream>using n amespace std;class A{public:A(){cout«"A";}~A(){cout«"~A";}};class B:public A{A* p;public:B(){cout<<"B"; p = new A();} ~B(){cout<<"~B"; delete p;} };int mai n(){B obj; return 0;}执行这个程序的输出结果是A)BAA~A~B~A B)ABA~B~A~AC)BAA~B~A~A D)ABA~A~B~A24有如下程序:#i nclude <iostream>using n amespace std;class Base{private:void fun 1() con st{cout«"fu nl";}protected:void fun 2() con st{cout<<"fu n2";} public:void fun 3() con st{cout<<"fu n3";}};class Derived:protected Base{public:void fun4() con st{cout<<"fu n4";}};int mai n(){Derived obj;obj.fu nl (); // ①obj.fu n2(); // ②obj.fu n3(); // ③obj.fu n4(); // ④return 0;}其中有语法错误的语句是A)①②③④B)①②③C)②③④D)①④ 25有如下程序:#i nclude <iostream>using n amespace std;class Base{public:void fun l(){cout«"Base "<<e ndl;}virtual void fun 2(){cout<<"Base"<<e ndl; } };class Derived:public Base{public:void fun l(){cout<v"Derived"v<e ndl;}void fun 2(){cout<<"Derived"<<e ndl;}};void f(Base & b){b.fu nl();b.fu n2();}int mai n(){Derived obj;f(obj);return 0;}执行这个程序的输出结果是A)Base B)BaseC)Derived D)DerivedBasQerived Base Derived26有如下类声明:class SAMPLE{int n;public:SAMPLE (int i = 0): n (i){}void setValue(i nt nO);};下列关于setValue成员函数的实现中,正确的是A) SAMPLE::setValue(i nt n 0){n = n0;}B) void SAMPLE::setValue(i nt n 0){n = n0;}C) void setValue(i nt n 0){n = n0;}D) setValue(i nt n 0){n = n0;}27 •下列函数模板的定义中,合法的是( )。

面向对象程序设计期末复习题资料

面向对象程序设计期末复习题资料

面向对象程序设计期末复习题一、单项选择题1.对于类中定义的成员,其隐含访问权限为【 B 】A) public B) private C) static D)protected2.关于类和对象不正确的说法是【 B 】A) 类是一种类型,它封装了数据和操作 B) 一个类的对象只有一个C) 对象是类的实例D) 一个对象必属于某个类3.下面关于对象概念的描述中,【 C 】是错误的。

A)对象代表着正在创建的系统中的一个实体B)对象就是C语言中的结构体变量C)对象是一个状态和操作(或方法)的封装体D)对象之间的信息传递是通过消息进行的4. 使用派生类的主要原因是【 A 】。

A)提高代码的可重用性B)提高程序的运行效率C)加强类的封装性D)实现数据的隐藏5. 有关析构函数的说法不正确的是【D 】A)析构函数有且只有一个B)析构函数无任何函数类型C)析构函数没有形参D)析构函数的作用是在对象被撤消时收回先前分配的内存空间6. 声明一个类的对象时,系统自动调用一个函数;撤消对象时,系统自动调用一个函数;该函数为【 C 】A) 成员函数;构造函数B) 复制构造函数;析构函数C) 构造函数;析构函数D) 析构函数;复制构造函数7. 下列关于运算符重载的描述中,【 D 】是正确的。

A)运算符重载可以改变操作数的个数B)运算符重载可以改变优先级C)运算符重载可以改变结合性D)运算符重载不可以改变语法结构8. 能用友元函数重载的运算符是【 A】。

A)+ B)= C)[] D)->9.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的【 A 】A) private成员B) protected成员C) public成员D) 友元10.在C++中,要实现动态联编,必须使用【D】调用虚函数A) 类名B) 派生类指针C) 对象名D) 基类指针11.若一个类中含有纯虚函数,则该类称为【 A 】A) 抽象类B) 纯基类C) 派生类D) 基类12.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式【 B 】A) ios:: out B) ios:: inC) ios::in|ios::out D) ios::binary13.通常拷贝构造函数的参数是【 C 】。

面向对象程序设计 复习资料

面向对象程序设计 复习资料

1.对象(1)从概念层面讲,对象是某种拥有责任的抽象。

(2)从规格层面讲,对象是一系列可以被其他对象使用的公共接口。

(3)从语言实现层面讲,对象封装了代码和数据。

2.软件开发中的经典阶段:需求、分析、设计、规范、实现、测试、部署、维护。

3.设计7原则:开闭原则、里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪M特原则、接口隔离原则、单一职责原则。

4.面向对象的方法学:UML(统一建模语言)、RUP(统一软件开发过程)、XP(极限编程)。

开发方法:Booch、Coad、OMT、UML、OOSE、Wirfs—Brock 5.OOA——运用面向对象方法进行需求分析。

OOD——运用面向对象方法进行系统设计。

OOP——运用面向对象方法进行程序设计。

6.OOA的基本任务:是运用面向对象的方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域及系统责任所需的类及对象,定义这些类和对象的属性和操作,以及它们之间所形成的结构、静态联系和动态联系。

最终目的:是产生一个符合用户需求,并能够直接反映问题域和系统责任的OOA模型及其详细说明。

优点:(1)加强了对问题域和系统责任的理解。

(2)改进与分析有关的各类人员之间的交流。

(3)对需求的变化具有较强的适应性。

(4)支持软件复用。

OOA的三大策略是:属性策略、方法策略、对象策略。

7.(1)封装:是指对象在其操作中隐藏属性。

它是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。

封装的目的是使对象的使用者和生产者分开,使对象的定义和实现分开。

例如:要从同事那里借钱,在商店购买食物,就不会抢夺同事的钱包,大翻一通,看看里面是否有足够的钱。

而应该询问他们是否可以借你一些钱,他们就会自己翻钱包。

以表示圆的一个对象作为封装的例子。

圆的操作应能计算出半径、直径、周长和面积。

假定选择存储直径,要访问直径的程序员都会选择存储直径属性,而不是通过“获取直径”的操作来访问。

面向对象程序设计 复习资料2

面向对象程序设计  复习资料2

面向对象程序设计复习资料(一)单项选择题1.Java是一门()语言。

A. 机器B. 汇编C. 面向过程的高级D. 面向对象的高级2. 具有相同属性和服务的一组对象的共同模板称为()。

A. 程序B. 类C. 代码D. 概念3.在Java程序中包含主方法的类被称为主类,主方法的访问控制修饰符为()。

A. privateB. protectedC. publicD. static4.Java语言中的switch语句属于()语句。

A. 数据输入B. 数据输出C. 分支处理D. 循环控制5.在类的定义中,实现接口的子句所使用的关键字为()。

A. extendsB. implementsC. publicD. abstract6.在派生类的定义中,继承父类的子句所使用的关键字为()。

A. extendsB. implementsC. publicD. abstract7.下列能表示栈(stack)s1长度的是( )。

A.s1.length()B.s1.lengthC.s1.sizeD.s1.size()8.下面的异常()为文件没有找到异常。

A. NullPointerExceptionB. FileNotFoundExceptionC. ArrayIndexOutOfBoundsExceptionD. IOException9.下列不是InputStream 类的子类的是()。

A. FileInputStreamB. ObjectInputStreamC、 FileOutputStream D. DataInputStream10.进行文件输入输出操作时,最常用的系统包是()。

A. B. java.ioC. java.utilD. java.awt11.类是对具有共同属性和行为的对象的抽象描述,每个对象称为该类的一个()。

A. 产品B. 元素C. 成分D. 实例12.使用JDK运行Java程序时使用的命令是()。

面向对象程序设计课程复习资料

面向对象程序设计课程复习资料

《面向对象程序设计》课程复习资料一、单项选择题:1.C#中每个 int 类型的变量占用()个字节的内存。

[ ]A.1B.2C.4D.82.C#应用程序中,用主方法指明程序执行的开始点,主方法的名字规定为 [ ]A. classB. mainC. MainD. MainWay3.下面所列的C#自定义标识符中,正确的是 [ ]A.@double B. $double C. #double D. ~double4.C#语言是微软.NET公共语言运行环境中内置的核心程序设计语言,是一种 [ ]A.面向过程程序设计语言B.面向对象程序设计语言C.跨平台程序设计语言D.机器语言5.C#语言中,双精度实型数据类型(double)所占用的存储空间为()个字节。

[ ]A.1B.2C.4D.86.C#应用程序中,导入其他系统预定义元素部分可以使用关键字 [ ]A. useB. namespaceC. importD. using7.下面的运算符中,优先级别最低的是 [ ]A. newB. !=C. ?:D. =8.设有整型变量x,则表达式x=5/8运算后,变量x的值为 [ ]A.0B.0.625C.0.6D.0.639.执行C#语句序列:int i; for (i = 0; i++ < 4; );后,变量i的值是 [ ]A.5B.4C.1D.010.在默认的情况下,省略的类访问修饰符是 [ ]A. privateB. publicC. protectedD. internal11.在下面的类声明中,属于私有字段的是 [ ]class Person{public string name;public string sex;private int age;double weight;}A. name sexB. ageC. weightD. age weight12.下面所列选项中,能够正确定义2行3列二维整型数组a的是 [ ]A. int [][] a = new int [2][3]B. int [ ,] a = new int [2,3]C. int [2][3]D. int [ ,] a = int [2,3]13.下面所列选项中,不能正确定义并初始化二维数组a的是 [ ]A. int [ ,] a = new int [2,3]{{1,2,3},{4,5,6}}B. int [ ,] a = new int [,]{{1,2,3},{4,5,6}}C. int [ ,] a = new int [2,3]{1,2,3,4,5,6}D. int [ ,] a = {{1,2,3},{4,5,6}}14.在C#中,下列()语句能创建一个具有 3 个初始值为""的元素的字符串数组。

面向对象程序设计复习资料

面向对象程序设计复习资料

面向对象程序设计复习资料第2章面向对象思维建立面向对象程序设计的特征:①模块化;②抽象化;③封装;④可组合;⑤继承;⑥软件持续使用时间更长。

面向对象思维分为两步:一是需求分析,识别出有哪些对象,它们分别做什么事(who&&what );二是如何利用对象协作完成一件完整的事情(howb•类与对象的概念和关系:1)类是面向对象程序设计方法的核心,利用类可以实现对数据的封装和隐蔽。

在面向对象程序设计中,程序模块是由类构成。

类是对逻辑相关的函数与数据的封装,它是对问题的抽象描述。

C++的语法提供了对自定义类型的支持,这就是类。

正如基本数据类型中隐含的数据和操作,因此在定义一个类时也要说明数据和操作。

2)类实际上是一种抽象机制,它描述了一类为问题的属性和行为,即类描述了一类对象的数据存储和操作特征。

每一个怪物都有一些共同的静态特征,这些共同的特征抽象到类中统称为该类的属性,属性通过声明普通变量来实现。

每一个怪物都有一些共同的动态行为,这些共同的行为抽象到类中统称为该类的操作, 操作通过声明普通变量来实现。

还能调用对象中的函数(构造函数和析构函数除外)・对象间的协作实现如果函数在类外实现,那么必须在函数名前加上类名,否那么不能实现“::"是作用域限定符,用来声明函数属于哪一类;类必须先在类中做原型声明,然后才能在类外实现;system(”psudr”):等待用户按键然后返回,按任意键继续;system(”cls”):清屏操作关键字new :①在堆上获得一块内存空间、②调用构造函数、③返回正确的指针栈(堆栈)是限定仅在表尾进行插入和删除操作的线性表。

单独存放数据的那块内存称为“堆”,存储指针那块内存称为“栈”User *Lucy = new User():声明一个指针对象Lucy ,在名称堆区保存Lucy这个对象的所有信息,在栈中保存Lucy的堆地址。

delete对象名;|销毁之前引用的对象第6章深入学习面对对象函数成员函数:属于一个类的函数;用于完成对象的初始化类函数:类的成员函数,属于一个类的成员,出现在类体中。

《面向对象程序设计》复习资料

《面向对象程序设计》复习资料

《面向对象程序设计》课程期末复习资料《面向对象程序设计》课程讲稿章节目录:第一章、C++基础(16个知识点)01 计算机求解问题的过程02 编程的步骤03 程序设计方法04 程序设计基本概念05 C++程序集成开发环境简介06 C++程序实例07 C++源程序的组成08 C++源程序的组成元素09 C++与C的主要差异–符号常量和标准输入输出流10 C++与C的主要差异–内联函数11 C++与C的主要差异–带默认形参值的函数12 C++与C的主要差异–函数重载13 C++与C的主要差异–动态内存分配和释放14 C++与C的主要差异–动态内存分配和释放程序实例15 C++与C的主要差异–引用和返回引用的函数16 C++与C的主要差异–函数的引用调用第二章、面向对象方法(27个知识点)01 面向对象方法基本概念–对象、类、实例和消息02 面向对象方法基本概念–封装、继承和多态03 类的定义04 构造函数05 对象的定义和访问06 对象的定义和访问程序实例07 类成员的访问控制08 类成员的访问控制程序实例09 析构函数11 类声明和类实现的分离12 类的常量成员13 类的静态数据成员14 类的静态成员函数15 this指针16 类的友元17 类的对象成员–基本概念18 类的对象成员–对象成员的声明、初始化和访问19 自定义类的运算符重载概述20 类成员函数形式的运算符重载21 类友元形式的运算符重载22 赋值运算符和下标运算符重载程序实例23 类设计实例24 面向对象方法程序实例–类和对象的基本定义、构造函数和析构函数25 面向对象方法程序实例–静态成员和多文件结构26 面向对象方法程序实例–友元和运算符重载27 面向对象方法程序实例–对象成员第三章、继承与多态(17个知识点)01 继承概述02 派生类定义03 派生类构造函数和析构函数04 派生类构造函数和析构函数程序实例05 函数重定义和派生类的继承方式06 多重继承下的派生类定义07 多重继承中的二义性问题08 虚拟继承和虚基类09 类型兼容10 多态性的概念和实现原理11 虚函数13 纯虚函数和抽象类14 继承与多态程序实例–派生类定义和函数重定义15 继承与多态程序实例–多重继承16 继承与多态程序实例–虚拟继承和虚函数17 继承与多态程序实例–抽象类和纯虚函数第四章、输入输出流(16个知识点)01 输入输出流概述02 输入输出流对象03 输入输出流的插入和提取运算符04 输入输出流的插入和提取运算符程序实例05 输入输出流的put函数06 输入输出流的get函数07 输入输出流的getline函数08 输入输出流的write函数09 输入输出流的read函数10 输入输出流的write、read函数程序实例11 文件随机读写概述和相关函数12 文件随机读写程序实例13 自定义类型数据的标准输入输出和文本文件输入输出14 自定义类型数据的二进制文件输入输出15 输入输出流程序实例–输入输出流操作16 输入输出流程序实例–插入运算符和提取运算符重载第五章、模板(7个知识点)01 函数模板的定义和使用02 函数模板程序实例03 类模板的定义04 类模板的使用05 类模板的静态成员06 模板程序实例–函数模板07 模板程序实例–类模板一、客观部分:(单项选择、多项选择、不定项选择、判断)(一)、选择部分1、面向对象方法的基本观点是一切系统都是由( C )构成的。

面向对象程序设计C 复习资料(一)

面向对象程序设计C  复习资料(一)

面向对象程序设计C++复习资料(一)
面向对象程序设计C++复习资料(一)面向对象程序设计C++复习资料(一)一、名词解释
1、多态性
2、构造函数
3、继承性
4、友元
二、填空
1、类的三大基本特性__________、__________、__________。

2、c++语言的函数参数传递方式有__________。

3、含有虚函数的类称为__________,含有纯虚函数的类为__________,为克服重复继承的二义性,用__________声明的基类称为虚基类,用__________声明函数称为虚函数。

4、在含有对象成员的派生类中,构造函数的调用次序,基类的构造函数对象成员的构造函数,派生类的构造函数的调用次序?
5、派生类对基类继承控制访问有三种__________。

三、单项选择
1、那个不是c++的基本数据类型()。

2、c++语言中有哪些存放在动态存储区。

()
3、下面对于指针的描述不正确的是()。

a、指针是
1。

面向对象程序设计资料整理长大

面向对象程序设计资料整理长大

面向对象程序设计复习资料(2328)一、单项选择题1.假设P是指针, 声明指针s引用指针p正确方法是( )A.int* s&=p B.int &*s=p C.int *&s=pD.int s* &=p2.在C+ +中, 能够为类的所有成员共享的是( )A、枚举成员B、公有数据成员C、私有函数成员D、公有函数成员3.C+ +中, 下列哪个关键字不能提供封装。

( )A、 structB、 unionC、 classD、 case4.下而关于类的复制构造函数的说法正确的是( )A.一个类只能有一个复制构造函数B.能够为void类型C.不能有返回类型D.不能使用缺省参数5.下面叙述正确的是: ( )A.派生类不能够使用私有派生B.保护派生时, 基类的保护成员在派生类中是公有的C.对基类成员的访问能够允许两义性D.赋值兼容规则也适用于多重继承的组合6.定义虚函数使用关键字( )A.: : B.virtual C.& D.->7.在下面几项中, 运算符在C++中能被重载的是( )A .= B.? : C.sizeof D. : :A.结构B.类C.继承D.引用8.在执行下面程序语句之后, num的值为( )int num = 500;int& ref= num;ref = = ref -50;A.450 B.500 C.-50D.无法确定9.所有在函数外面定义的变量, 连同形式参数, 都属于( )A、局部变量B、全局变量C、静态变量D、寄存器变量10.面向对象的程序中, 哪项不是对象的特点。

( )A、多态性B、抽象性和封装性C、中断D、继承性11.下面在半初始化说法正确的是( )A.初始化列表能够初始化任何类B.初始化列表也也能够初始化具有私有成员的类C.初始化列表只能初始化公有数据成员D.初始化列表能够初始化所有数据成员12.产生编译时的多态性的必要条件是使用( )A.静态成员 B.友元函数 C.重载成员函数D.虚函数13.operator经常和C++的一个运算符连用,构成一个运算符函数名.运算符函数的返回类型不能是( )A.voidB.charC.intD.float14.下面是对C++运算符的叙述, 正确的叙述是( )A.只有类运算符 B.只有友元运算符C.同时具有类运算符和友元运算符 D.同一个运算符只能重载一次15.在面向对象的设计中,一切都是围绕着什么展开的( )A.类B.结构C.数据类型D.对象16.下面哪项不能算是面向对象程序设计所具有的显著特点( )A .封装 B.继承 C.抽象 D.递归17.下面选项中哪一项不是结构和类的共同特性( )A.对象能够用作数组的元素 B.在缺省情况下, 成员是私有的C.对象之间能够相互赋值 D.能够说明指向对象的指针和引用18.下面有关类性质说法错误的是( )A.一个类能够有多个构造函数,但只有一个析构函数B.析构函数和构造函数都不能有返回类型C.不能够给析构函数指定参数D.一个类中不能够说明具有类类型的数据成员19.下面叙述不正确的是( )A.成员的访问能力取决于派生方式B.基类的私有成员在公有派生类中不可访问C.对象能够访问所有成员D.公有基类成员在保护派生中保护的20.成为抽象类的一个条件是这个类( )A.至少有一个纯虚函数 B.至少有一个虚函数C.只含有一个纯虚函数 D.只含有一个虚函数21.下列叙述正确的是( )A.有1个运算符不能被重载 B.有2个运算符不能被重载C.有3个运算符不能被重载 D.有4个运算符不能被重载22.在以下选项中, 不属于模板特点的选项是( )A.处理数据时, 处理的是不同类型的相同操作B.声明不需要给出数据类型C.对于相同的数据类型产生不同的实例D.对于不同的数据类型能够产生不同的实例23.经过什么建立类树( )A.类B.虚函数C.多重继承D.单一继承24.C++使用新的分配动态内存的函数是( )A . malloc ( ) B. free( ) C. delete D. new 25.以下关于C+ +对象特点叙述不正确的是( )A、对象能够进行四则运算 C、对象能够用作数组的元素C、对象能够用作函数参数D、对象之间能够相互赋值26.有关复制构造函数说法错误的是( )A.复制构造函数不能使用初始化列表B. 复制构造函数不能有返回值C. 复制构造函数名与类名相同并能够有多个复制构造函数D. 复制构造函数的参数能够为引用对象27.对友元函数描述正确的是( )A.一个类的友元函数是该类的一个特殊成员函数B.一个类的友元函数能够访问类的所有数据成员C.友元函数只允许访问该类对象的私有成员D.友元函数只允许访问该类的公有成员28.进行文件操作时需要包含的头问家是( )A.iostream.h B. fstream.h C.stdio.h D. stdlib.h29.下面关于类模板叙述不正确的是( )A.声明类模板”; ”号结束B.不能重载运算符C.能够使用友元函数D.能使用虚函数30.系统不会为类自动建立什么成员函数( )A.默认构造函数 B.默认析构函数C.默认虚析构函数D.默认赋值运算赋二、填空题:1.函数 int * func(void)的返回类型是__ _ __.2.C+ +中, 关键字用作联合.3.关键字virtual能够用来声明类.4.抽象类至少要含有一个 ,这种函数属于虚函数5.成员函数”void print( )const;”是类的函数, 它只能被const对象调用。

面向对象程序设计复习资料

面向对象程序设计复习资料

面向对象程序设计期末总复习题一、单项选择题1.下面关于对象概念的描述中,_______是错误的。

〔B〕A.对象代表着正在创立的系统中的一个实体C.对象是一个状态和操作(或方法)的封装体2. 继承机制的作用是:(C)A.信息隐藏B.数据封装C.定义新类D.数据抽象(D)A.析构函数有且只有一个B.析构函数无任何函数类型D.析构函数不能是虚函数(A)A.提高程序的运行效率B.加强类的封装性C.实现数据的隐藏性5.通常拷贝构造函数的参数是__________。

(C)A.某个对象名B.某个对象的成员名C.某个对象的引用名6.如果在基类中将show声明为不带返回值的纯虚函数,正确的写法是________。

(C)A.virtual show()=0;B.virtual void show();C.virtual void show()=0;D.void show=0 virtual;7.下面关于友元的描述中,错误的选项是_________。

(D)8.在C++中,_________运算符不能重载。

(B)A. +B.?:C.-D.<=9.以下关于运算符重载的描述中,________是正确的。

(D)A.运算符重载可以改变操作数的个数C.运算符重载可以改变结合性10. 在以下函数原型中,可以作为类AA构造函数的是_________(D)A.void AA(int) ; B.int AA( ) ; C.AA(int)const; D.AA(int);11.在声明类时,下面的说法正确的选项是_________。

(C)A.可以在类的声明中给数据成员赋初值C.private,public,protected可以按任意顺序出现D.没有用private,public,protected定义的数据成员是公有成员12.继承具有________,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。

(B)A.规律性B.传递性C.重复性13.在多重继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规那么___________。

面向对象程序设计-总复习

面向对象程序设计-总复习

2
LOGO
1、对类的构造函数和析构函数描述正确的是 、 ( )。 A) 构造函数可以重载,析构函数不能重载 ) 构造函数可以重载, B) 构造函数不能重载,析构函数可以重载 ) 构造函数不能重载, C) 构造函数可以重载,析构函数也可以重载 ) 构造函数可以重载, D) 构造函数不能重载,析构函数也不能重载 ) 构造函数不能重载,
LOGO
对于结构中定义的成员, 对于结构中定义的成员 , 其默认的访问权限为 ( )。 A)public B) protected C) private D) ststic
7
LOGO
为了使类中的某个成员不能被类的对象通过成员 操作符访问, 操作符访问 , 则不能把该当成员的访问权限定义 为( )。 A)public B) protected C) private D) static
3
LOGO
2、类的析构函数的作用是( 类的析构函数的作用是( )。 A)一般成员函数 B)类的初始化 C)对象初始化 D)删除对象
4
LOGO
假设OneClass 为一个类 假设 OneClass为一个类 , 则该类的拷贝初始化构 OneClass 为一个类, 造函数的声明语句为( 造函数的声明语句为( )。 A)OneClass(OneClass p); p); p); B) OneClass& (OneClass p); p); C) OneClass(OneClass & p); *p); D) OneClass (OneClass *p);
8
LOGO
下面对静态数据成员的描述中,正确的是( 下面对静态数据成员的描述中 , 正确的是 ( ) 。 A)静态数据成员可以在类体内进行初始化 B)静态数据成员不可以在类体内进行初始化 静态数据成员不能受private private控制符的作用 C)静态数据成员不能受private控制符的作用 D)静态数据成员不可以直接用类名调用
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象程序设计期末总复习题、单项选择题1. _________________________________ 下面关于对象概念的描述中, 是错误的。

(B )C.对象是一个状态和操作(或方法)的封装体D.对象之间的信息传递是通过消息进行的2. _____________________________ 继承机制的作用是: (C)5. __________________________________ 通常拷贝构造函数的参数是。

(C)6. ___________________________________________________________________ 如果在基类中将show 声明为不带返回值的纯虚函数,正确的写法是 ______________________________ 。

(C)C.virtual void show()=0 ; D.void show=0 virtual ;7. 下面关于友元的描述中,错误的是 __________ 。

(D)A. 友元函数可以访问该类的私有数据成员B. 一个类的友元类中的成员函数都是这个类的友元函数C. 友元可以提高程序的运行效率D. 类与类之间的友元关系可以继承 8. 在C++中, _________ 运算符不能重载。

(B)A. +B. ? :C.-D.<=9. 下列关于运算符重载的描述中, __________是正确的。

(D) A.运算符重载可以改变操作数的个数 B.运算符重载可以改变优先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构10. 在下列函数原型中,可以作为类AA 构造函数的是 ___________ (D)A . void AA(int) ;B . int AA( ) ;C . AA(int)const;D . AA(int);11. 在声明类时,下面的说法正确的是 ___________ 。

(C)A. 可以在类的声明中给数据成员赋初值B. 数据成员的数据类型可以是 registerC. private , public , protected 可以按任意顺序出现D. 没有用private , public , protected 定义的数据成员是公有成员12. 继承具有 _______ ,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的A.对象代表着正在创建的系统中的一个实体B.对象就是C 语言中的结构体变量A .信息隐藏B •数据封装C .定义新类D •数据抽象 A.析构函数有且只有一个B.析构函数无任何函数类型D.析构函数不能是虚函数4.友兀的作用之一是(A)A.提高程序的运行效率B.加强类的封装性C.析构函数没有形参D.增加成员函数的种类A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名 A. virtual show()=0B. virtual void show()3.有关析构函数的说法不正确的是 ____________ (D)C.实现数据的隐藏性成员。

(B)___________ 。

(A)16. _________________________________________ 下面关于C++语言变量的叙述错误的是 (B)A .在C++语言中变量分为 auto , static , extern 和register 四种存储类型B .自动变量和外部变量的作用域为整个程序C .内部变量的作用域是定义它的函数D .外部静态变量的作用域是定义它的文件17. 下列的各类函数中, _______ 不是类的成员函数。

(C)A. 构造函数B.析构函数C.友元函数18. 有如下类声明:Class Foo {ing bar ;}; 则Foo 类的成员bar 是 ___________ (C)23.声明一个类的对象时, 系统自动调用一个函数; 撤消对象时, 系统自动调用一个函数; 该函数为___CA.成员函数;构造函数B.复制构造函数;析构函数C.构造函数;析构函数D •析构函数;复制构造函数24.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的__A _____B. proteCted 成员C.public 成员 D.友元25.在C++中,要实现动态联编,必须使用 _________ D___调用虚函数A. 类名B.派生类指针A. 规律性 13. 在 多 重 继 承 中 ,B. 传递性C.重复性D. 多样性公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则A. 完全相同B. 完全不同C. 部分相同,部分不同D.以上都不对14. 对虚函数的调用 ___________ 。

(D)A. 一定使用动态联编 C. 一定使用静态联编15. 关于成员函数特征的下述描述中,A. 成员函数一定是内置函数B. 必须使用动态联编 D.不一定使用动态联编_______ 是错误的。

(A)B. 成员函数可以重载C. 成员函数可以设置参数的默认值D.成员函数可以是静态的D.拷贝构造函数A. 公有数据成员B. 公有成员函数C. 私有数据成员D. 私有成员函数19. 下列表示引用的方法中, ___________ A. float &t=&m; B.int &y=1020. 设置虚基类的目的是 _________ 。

(B)A. 简化程序B. 消除二义性21.对于类中定义的成员,其隐含访问权限为A.publiCB.private22.关于类和对象不正确的说法是 ________A. 类是一种类型,它封装了数据和操作 是正确的。

已知: int m=10; (D);C.int &z ;D. int &x=mC.提高运行效率D .减少目标代码_______ (B)C.staticD.protected(B)B. —个类的对象只有 个C.对象是类的实例A.private 成员 D. 一个对象必属于某个类C.对象名若一个类中含有纯虚函数,则该类称为 A. 抽象类C.派生类 下列关于 this 指针的叙述中,正确的是 A .任何与类相关的函数都有this 指针B .类的成员函数都有 this 指针C .类的友元函数都有 this 指针D .类的非静态成员函数才有 t his 指针 有如下类声明: class Book {int num() ;}; 则 Book 类的成员 num 是___ D _ A .公有数据成员 B .公有成员函数 下面有关重载函数的说法中正确的是 ___CA.重载函数必须具有不同的返回值类型; C)重载函数必须有不同的形参列表; 下面对友元函数描述正确的是 _________ ___C A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员下面叙述不正确的是 ___A _A. 基类的保护成员在派生类中仍然是保护成员B. 基类的保护成员在公有派生类中仍然是保护成员C. 基类的保护成员在私有派生类中是私有成员D. 对基类成员的访问必须是无二义性下面对静态数据成员的描述中,正确的是 __________ ___DA. 静态数据成员可以在类体内进行初始化B. 静态数据成员不可以被类的对象调用C. 静态数据成员不能受 private 控制符的作用D. 静态数据成员可以直接用类名调用在C++类语言体系中,不能被派生类继承的有 ______ BA .转换函数B .构造函数C .虚函数D .静态成员函数26. 27. 28.29.30.31. 32. 33.34.35.36.D.基类指针___ A ___ B. 纯基类D. 基类___D ____ C .私有数据成员 D .私有成员函数B.重载函数形参个数必须不同; D.重载函数名可以不同;B .简化代码 D. 减少目标代码 ___B ____B. 调用成员函数实现D.函数重载实现 __C _____C. ::D./设置虚基类的目的是 ___A ____ A. 消除二义性C.提高运行效率在C++语言程序中, 对象之间的相互通信通过 A. 继承实现C. 封装实现下列运算符中,在 C++语言中不能重载的是 A.*B.>=37.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函38 •下列关于虚基类的描述中,错误的是_B _______A. 设置虚基类的目的是为了消除二义性; B. 虚基类的构造函数在非虚基类之后调用;C. 若同一层包含多个虚基类,这些基类的构造函数按照它们的次序调用;D. 若虚基类由非基类派生而来,则仍然先调用基类构造函数,再用派生类的构造函数39. _______________________________________________________________________________ 考虑函数原型 void test (int a,int b=7,char="*"),下面的函数调用中,属于不合法调用的是 ________________ C ____41.在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是 ()。

DA. —元成员运算符 B .二元成员运算符C .一元友元运算符D .选项B 和选项C 都可能42.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是 ()°CA 派生类的对象可以赋给基类的对象B.派生类的对象可以初始化基类的引用C. 派生类的对象可以直接访问基类中的成员 D .派生类的对象的地址可以赋给指向基类的指针 43.下面关于虚函数的描述,错误的是()。

BA. 在成员函数声明的前面加上 virtual 修饰,就可把该函数声明为虚函数B. 基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数C. 虚函数可以是另一个类的友元函数,但不能是静态成员函数D. 基类中说明的纯虚函数在其任何派生类中都必须实现 44.定义派生类时,若不使用关键字显示地规定采用何种继承方式,则默认方式为 ()。

AA.私有继承 B .非私有继承 C .保护继承 D .公有继承 45. 有如下程序: #in clude using n amespace std ; class ONE{ int c ; public:ONE() : c (0) {cout<<1 ; } ONE( int n ) : c (n ) {cout<<2 ; } }; class TWO{数是 ____ C ___A.友元函数B.虚函数C.构造函数D.析构函数A. test (5)B.test (5,8)40. 下列关于构造函数的描述中,错误的是A.构造函数可以设置默认参数; C.test(6,"#") D.test(O,O."*");DB. 构造函数在定义类对象时自动执C.构造函数可以是内联函数;D.构造函数不可以重载ONE onel;ONE one2; public:TWO ( int m ): one2( m ) {cout<<3 ;} };int main () { TWO t4() return 0}运行时的输出结果是 ( ) 。

相关文档
最新文档