C++概念与简答_第1页
C++概念与简答_第2页
C++概念与简答_第3页
C++概念与简答_第4页
C++概念与简答_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.c+概念与简答第一章 绪论1、请简述什么是面向对象的语言(1)出发点:更直接地描述客观世界中存在的事物(对象)以及它们之间的关系。(2)特点:是高级语言。将客观事物看作具有属性和行为的对象。通过抽象找出同一类对象的共同属性和行为,形成类。通过类的继承与多态实现代码重用。(3)优点:使程序能够比较直接地反映问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。2、面向对象的方法(1)将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体对象。(2)对同类型对象抽象出其共性,形成类。(3)类通过一个简单的外部接口,与外界发生关系。(4)对象与对象之间

2、通过消息进行通信。3、封装:把对象的属性和服务结合成一个独立的系统单元4、继承对于软件复用有着重要意义,是面向对象技术能够提高软件开发效率的重要原因。定义:特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。5、多态性:同样一个接口,不同的数据有不同的状态6、面向对象的软件工程(考察缩写匹配)l 面向对象的分析(ooa)意义:能够很好地映射客观事物。l 面向对象的设计(ood)l 面向对象的编程(oop)l 面向对象的测试(oot)以对象的类作为基本测试单位l 面向对象的软件维护(oosm)7、程序的开发过程(1)编辑:将源程序输入到计算机中,生成后缀为cpp的磁盘文件。(2)

3、编译:将程序的源代码转换为机器语言代码。(3)连接:将多个源程序文件以及库中的某些文件连在一起,生成后缀为exe的可执行文件。(4)运行调试精品.第二章 c+简单程序设计1、语言的最基本单位是字符:字符词语句函数程序。2、字符集是构成c+语言的基本元素3、词法记号是最小的词法单位4、类型名的字节长度类型名长度(字节)bool1char1signed char1unsigned char1short(signed short)2unsigned short2int(signed int)4unsigned int4long(signed long)4unsigned long4float4dou

4、ble8long double85、所谓常量是指在程序运行的整个过程中其值始终不可改变的量,也就是直接使用符号(文字)表示的值。分为一般常量和符号常量两种6、实数常量缺省为double型,如果后缀f(或f)可以使其成为float型精品.7、字符串型常量是用双引号括起来的一个或多个字符。(要和字符常量区分)8、bool,值只能为 true 或 false9、sizeof 运算符用来求“类型名”所指定的类型或“表达式”的结果类型所占的字节数10、隐含转换,基本原则是将低类型数据转换为高类型数据11、从流中获取数据的操作称为提取操作“”,向流中添加数据的操作称为插入操作“”。12、cin用来处理标准

5、输入,即键盘输入。cout用来处理标准输出,即屏幕输出。cout 表达式 表达式 表达式.13、结构是由不同数据类型的数据组成的集合体。第三章 函数1、函数的调用l 调用前先声明函数:l 若函数定义在调用点之前,则无需另外声明;l 若函数定义在调用点之后,则需要在调用函数前按如下形式声明函数原型:n 类型标识符 被调用函数名(含类型说明的形参表);l 调用形式 n 函数名(实参列表) l 嵌套调用l 函数可以嵌套调用,但不允许嵌套定义。l 递归调用l 函数直接或间接调用自身。2、函数的参数传递l 在函数被调用时才分配形参的存储单元。 (经常考选择题)l 实参可以是常量、变量或表达式。l 实参类

6、型必须与形参相符。 (经常考选择题)l 值传递是传递参数值,即单向传递。 (经常考选择题)l 引用传递可以实现双向传递 (经常考选择题)l 常引用作参数可以保障实参数据的安全3、引用可以作为形参(作为形参不必初始化)void swap(int &a, int &b) .精品.4、有缺省参数的形参必须在形参列表的最后,也就是说缺省形参值的右面不能有无缺省值的参数。因为调用时实参与形参的结合是从左向右的顺序。(要理解,考选择题)int add(int x, int y = 5, int z = 6);/正确int add(int x = 1, int y = 5, int z);/错误int ad

7、d(int x = 1, int y, int z = 6);/错误5、函数重载: c+允许功能相近的函数在相同的作用域内以相同函数名声明,从而形成重载。方便使用,便于记忆。要么形参类型不同,要么形参个数不同(不以形参名来区分,不以返回值来区分)6、很多标准c+函数继承自标准c,头文件以c开头:cmath,cstdlib,cstdio,ctime第四章 类与对象1、抽象的实现:通过类的声明。2、类是具有相同属性和行为的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。3、函数是将逻辑上相关的语句与数据封装,用于完成特定的功能。而类则是逻辑上相关的函数

8、与数据封装,它是对所要处理的问题的描述。(非常重要的两句话)4、类是一种用户自定义类型5、在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。如果紧跟在类名称的后面声明私有成员,则关键字private可以省略。6、类的对象是该类的某一特定实体,即类类型的变量。(想不到吧)声明形式: 类名 对象名;例:clock myclock; 类中成员互访:直接使用成员名 类外访问:使用“对象名.成员名”方式访问 public属性的成员7、在类中说明原型,可在类外给出函数体实现,并在函数名前使用类名加以限定。也可以直接在类中给出函数体,形成内联成员函数。8、内联成员函数(爱

9、考选择题)为了提高运行时的效率,对于较简单的函数可以声明为内联形式。内联函数体中不要有复杂结构(如循环语句和switch语句)。在类中声明内联成员函数的方式:精品.隐式将函数体放在类的声明中。显式使用inline关键字。9、结构与类的区别区别:(很重要)类中成员的缺省存储属性为私有的;结构体中的缺省存储属性为公有的.10、构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。在对象创建时由系统自动调用。如果程序中未声明,则系统自动产生出一个隐含的参数列表为空的构造函数允许为内联函数、重载函数、带默认形参值的函数11、拷贝构造函数是一种特殊的构造函数,其形参为本

10、类的对象引用。class 类名 public : 类名(形参);/构造函数 类名(类名 &对象名);/拷贝构造函数 .;类名:类(类名 &对象名)/拷贝构造函数的实现 函数体 12、析构函数:在对象的生存期结束的时刻系统自动调用它,然后再释放此对象所属的空间。第五章 数据的共享与保护1、类作用域作用于特定的成员名2、类x的成员m具有类作用域,对m的访问方式如下: l 如果在x的成员函数中没有声明同名的局部作用域标识符,那么在该函数内可以访问成员m。l 通过表达式x:m或者x.m访问。l 通过表达式ptr-m3、不在前述各个作用域中出现的声明,就具有文件作用域,这样声明的标识符其作用域开始于声明

11、点,结束于文件尾。4、程序运行到某一点。能够引用到的标识符,就是该处可见的标识符。精品.5、标识符应声明在先,引用在后。如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在内层可见。对于两个嵌套的作用域,如果在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内层不可见。6、对象从产生到结束的这段时间就是它的生存期7、在函数内部声明静态生存期对象,要冠以关键字static。8、静态数据成员用关键字static声明该类的所有对象维护该成员的同一个拷贝必须在类外定义和初始化,用(:)来指明所属的类。(重要考点)9、静态成员属于类,非静态成员属于对象。静态成员函

12、数只能引用属于该类的静态数据成员或静态成员函数。10、“常“常类型的对象必须进行初始化,而且不能被更新。常对象:必须进行初始化,不能被更新。const 类名 对象名常引用:被引用的对象不能被更新。const 类型说明符 &引用名常数组:数组元素不能被更新(下一章介绍)。类型说明符 const 数组名大小.常指针:指向常量的指针(下一章介绍)。11、一个源程序可以划分为多个源文件:l 类声明文件(.h文件)l 类实现文件(.cpp文件)l 类的使用文件(main()所在的.cpp文件)12、编译预处理#include 包含指令将一个源文件嵌入到当前源文件中该点处。#include 按标准方式搜索

13、,文件位于c+系统目录的include子目录下#include文件名首先在当前目录中搜索,若没有,再按标准方式搜索。#define 宏定义指令定义符号常量,很多情况下已被const定义语句取代。精品.定义带参数宏,已被内联函数取代。#define max(a, b) (a)(b)?(a): (b)#undef删除由#define定义的宏,使之不再起作用。第六章 数组 指针与字符串1、数组元素所属类的构造函数l 不声明构造函数,则采用缺省构造函数。l 各元素对象的初值要求为相同的值时,可以声明具有默认形参值的构造函数。l 各元素对象的初值要求为不同的值时,需要声明带形参的构造函数。l 当数组中每

14、一个对象被删除时,系统都要调用一次析构函数。2、指针变量的声明指针:内存地址,用于间接访问内存单元指针变量:用于存放地址的变量3、指针变量的赋值运算向指针变量赋的值必须是地址常量或变量,不能是普通整数。但可以赋值为整数0,表示空指针。指针的类型是它所指向变量的类型,而不是指针本身数据值的类型,任何一个指针本身的数据值都是unsigned long int型。4、动态申请内存操作符 newnew 类型名t(初始化参数列表)功能:在程序执行期间,申请用于存放t类型对象的内存空间,并依初值列表赋以初值。结果值:成功:t类型的指针,指向新分配的内存;失败:抛出异常。5、释放内存操作符deletedel

15、ete 指针p功能:释放指针p所指向的内存。p必须是new操作的返回值。6、申请和释放动态数组分配:new 类型名t 数组长度 数组长度可以是任何表达式,在运行时计算释放:delete 数组名p释放指针p所指向的数组。p必须是用new分配得到的数组首地址。7、用字符数组存储和处理字符串字符串常量(例:program)各字符连续、顺序存放,每个字符占一个字节,以0结尾,相当于一个隐含创建的字符常量数组;“program”出现在表达式中,表示这一char数组的首地址;首地址可以赋给char常量指针;const char *string1 = program;精品.字符串变量可以显式创建字符数组来表

16、示字符串变量,例如,以下三条语句具有等价的作用:char str8 = p, r, o, g, r, a, m, 0 ;char str8 = program;char str = program;8、字符串的输入/输出方法逐个字符输入输出将整个字符串一次输入或输出例:char c =china; coutc;注意输出字符不包括 0输出字符串时,输出项是字符数组名,输出时遇到0结束。输入多个字符串时,以空格分隔;输入单个字符串时其中 不能有空格。9、字符串处理函数strcat(连接),strcpy(复制),strcmp(比较),strlen(求长度),strlwr(转换为小写),strupr(

17、转换为大写)头文件第七章继承与派生1、类的继承与派生保持已有类的特性而构造新类的过程称为继承。在已有类的基础上新增自己的特性而产生新类的过程称为派生。被继承的已有类称为基类(或父类)。派生出的新类称为派生类。2、一个派生类,可以同时有多个基类,这种情况称为多继承。一个派生类只有一个直接基类的情况,称为单继承。直接参与派生出某类的基类称为直接基类,基类的基类甚至更高层的基类称为间接基类。派生类成员是指除了从基类继承来的所有成员之外,新增加的数据和函数成员。3、派生类生成过程派生新类经历了三个步骤:吸收基类成员吸收基类成员之后,派生类实际上就包含了它的全部基类中除构造和析构函数之外的所有成员。改造

18、基类成员精品.如果派生类声明了一个和某基类成员同名的新成员(如果是成员函数,则参数表也要相同,参数不同的情况属于重载),派生的新成员就覆盖了外层同名成员添加新的成员派生类新成员的加入是继承与派生机制的核心,是保证派生类在功能上有所发展4、保护继承(protected)基类的public和protected成员都以protected身份出现在派生类中,但基类的private成员不可直接访问。派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。通过派生类的对象不能直接访问基类中的任何成员5、类型兼容规则一个公有派生类的对象在使用上可以

19、被当作基类的对象,反之则禁止。具体表现在:派生类的对象可以隐含转换为(赋值给)基类对象。派生类的对象可以初始化基类的引用。派生类的指针可以隐含转换为基类的指针。当派生类对象被当成基类对象使用后,通过基类对象名、指针只能使用从基类继承的成员6、继承时的构造函数基类的构造函数不被继承,派生类中需要声明自己的构造函数。定义构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化,自动调用基类构造函数完成。派生类的构造函数需要给基类的构造函数传递参数7、构造函数的执行顺序(非常重要)l 调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右)。l 对成员对象进行初始化,初始化顺

20、序按照它们在类中声明的顺序。l 执行派生类的构造函数体中的内容。精品.8、同名隐藏规则:如要通过派生类对象访问基类中被隐藏的同名成员,应使用基类名限定。第八章 多态性1、多态是指操作接口具有表现多种形态的能力,即能根据操作环境的不同采用不同的处理方式。一组具有相同基本语义的方法能在同一接口下为不同的对象服务。2、运算符重载的规则c+ 几乎可以重载全部数据的实际需要,对原有运算符进行适当的运算符,只能重载c+语言中已有的运算符,不可臆造新的。不能重载的运算符举例:“.”、“.*”、“:”、“?:”重载之后运算符的优先级和结合性都不会改变。不能改变操作数个数。运算符重载是针对新类型的改造。经重载的运算符,其操作数中至少应该有一个是自定义类型。两种重载方式:重载为类的非静态成员函数和重载为非成员函数。3、绑定: 程序自身彼

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论