C语言程序设计期末总结

上传人:壹****1 文档编号:503761004 上传时间:2022-12-23 格式:DOC 页数:18 大小:76KB
返回 下载 相关 举报
C语言程序设计期末总结_第1页
第1页 / 共18页
C语言程序设计期末总结_第2页
第2页 / 共18页
C语言程序设计期末总结_第3页
第3页 / 共18页
C语言程序设计期末总结_第4页
第4页 / 共18页
C语言程序设计期末总结_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《C语言程序设计期末总结》由会员分享,可在线阅读,更多相关《C语言程序设计期末总结(18页珍藏版)》请在金锄头文库上搜索。

1、.C+程序设计总结:1. C与C+的区别:引入类和对象,成为面向对象的程序设计语言一、类 二、引用三、函数的重载四、流操作符五、操作符重载六、继承,以及虚函数参考(C是一个结构化语言:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C+,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C+的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C+比C更先进,是因为“ 设计这个概念已经被融入到C+之中

2、”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。 对语言本身而言,C是C+的子集,那么是什么样的一个子集?从上文可以看出, C实现了C+中过程化控制及其它相关功能,而在C+中的C(我称它为“C+”),相对于原来的C还有所加强,引入了重载、内联函数、异常处理等等玩艺儿,C+更是拓展了面向对象设计的内容,如类、继承、虚函数、模板和包容器类等等。 再提高一点,在C+中,数据封装、类型这些东东已不是什么新鲜事了,需要考虑的是诸如:对象粒度的选择、对象接口的设计和继承、组合

3、与继承的使用等等问题。 所以相对于C,C+包含了更丰富的“设计”的概念,但C是C+的一个自洽子集,也具有强大的功能,同样值得学习。)l *全面兼容C 它保持了C的简洁、高效和接近汇编语言等特点 对C的类型系统进行了改革和扩充 C+也支持面向过程的程序设计,不是一个纯正的面向对象的语言l 支持面向对象的方法2. 友元函数 友元函数在类中用 friend 修饰的非成员函数,在其函数体中可以通过对象名访问类的 Private和protected成员。l 作用:增加灵活性,使程序员可以在封装和快速性方面做合理选择。l 访问对象中的成员必须通过对象名。 友元类: 若A类为B类的友元类,则A类的所有成员函

4、数都是B类的友元函数, 都可以访问B类的私有和保护成员。 语法形式: class B /B类中成员函数声明 friend class A; /声明A为B的友元类 ; 注意:(1. 友元关系是不能传递的 2. 友元关系是单向的 3. 友元关系是不被继承的。)3. 重载 哪些运算符不能重载:类属关系运算符“.”,成员指针运算符“.*”,作用域分辨符“:”,三目运算符“?:”。运算符重载的两种形式:重载为类的非静态成员函数(函数只有一个形参)和重载为非成员函数(函数的形参有两个)。*运算符重载 成员与非成员 之间的差异:如何实现差异:308至315页 例8-1、8-2、8-3*4. 继承(实现代码重

5、用)与派生类的继承方式:公有继承、私有继承、保护继承。继承:公有继承(public):(1) 基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接访问。(2) 派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。(3) 通过派生类的对象只能访问基类的public成员。私有继承(private):l 基类的public和protected成员都以private身份出现在派生类中,但基类的private成员不可直接访问。l 派生类中的成员函数可以直接访问基类中的public和pro

6、tected成员,但不能直接访问基类的private成员。l 通过派生类的对象不能直接访问基类中的任何成员保护继承(protected):l 基类的public和protected成员都以protected身份出现在派生类中,但基类的private成员不可直接访问。l 派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。l 通过派生类的对象不能直接访问基类中的任何成员5. 拷贝构造函数(无返回类型110113)l 构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。l 在对象创建时由系统自动调用

7、。l 如果程序中未声明,则系统自动产生出一个隐含的参数列表为空的构造函数l 允许为内联函数、重载函数、带默认形参值的函数l 拷贝构造函数是一种特殊的构造函数,其形参为本类的对象引用。拷贝构造函数被调用的情况:l 当用类的一个对象去初始化该类的另一个对象时系统自动调用拷贝构造函数实现拷贝赋值。l 若函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数。l 当函数的返回值是类对象时,系统自动调用拷贝构造函数。方法:class 类名 public: 类名(形参表); /构造函数 类名(类名&对象名); /复制构造函数 /各成员函数;类名:类名(类名&对象名); /复制构造函数的实

8、现 函数体例题:class Pointpublic: Point(int xx=0,int yy=0) /构造函数 x=xx; y=yy;Point(Point&p); /复制构造函数int getX( ) return x;int getY( ) return y;private: int x,y;/复制构造函数的实现Point:Point(Point&p) x=p.x; y=p.y; cout“”endl;6. 引用 引用传递:l 引用(&)是标识符的别名,例如:int i, j;int &ri = i; /建立一个int型的引用ri,并将其 /初始化为变量i的一个别名j = 10;ri

9、= j;/相当于 i = j;l 声明一个引用时,必须同时对它进行初始化,使它指向一个已存在的对象。l 一旦一个引用被初始化后,就不能改为指向其它对象。l 引用可以作为形参void swap(int &a, int &b) .?/函数参数的引用7. 内联函数的使用 内联函数的引用和声明:l 声明时使用关键字 inline。l 编译时在调用处用函数体进行替换,节省了参数传递、控制转移等开销。l 注意: 内联函数体内不能有循环语句和switch语句。 内联函数的声明必须出现在内联函数第一次被调用之前。 对内联函数不能进行异常接口声明8. 派生类的构造函数初始化如何实现? 派生类构造函数语法形式:(

10、265页)* (166例 7-4)* (268269例 7-5)*派生类与基类的构造函数:l 当基类中声明有缺省构造函数或未声明构造函数时,派生类构造函数可以不向基类构造函数传递参数,也可以不声明,构造派生类的对象时,基类的缺省构造函数将被调用。l 当需要执行基类中带形参的构造函数来初始化基类数据时,派生类构造函数应在初始化列表中为基类构造函数提供参数。有内嵌对象时的构造函数:派生类名:派生类名(形参表):基类名1(参数), 基类名2(参数), .基类名n(参数),新增成员对象的初始化 本类成员初始化赋值语句;构造函数的执行顺序:1 调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向

11、右)。2 对成员对象进行初始化,初始化顺序按照它们在类中声明的顺序。3执行派生类的构造函数体中的内容。9. 纯虚函数和抽象类,应用场合 特点 使用限制(321323) 纯虚函数(没有函数体)声明格式: virtual 函数类型 函数名(参数表)=0; 声明为纯虚函数之后,基类中就可以不再给出函数的实现部分。 纯虚函数的函数体由派生类给出。 抽象类:(*例 8-4 323) (抽象类不能产生对象)抽象类不能实例化。 抽象类:带有纯虚函数的类。10. 不声明public、private、protected 会被默认为私有成员。11. 对象数组初始化l 数组中每一个元素对象被创建时,系统都会调用类构

12、造函数初始化该对象。l 通过初始化列表赋值。例:Point a2=Point(1,2),Point(3,4);l 如果没有为数组元素指定显式初始值,数组元素便使用默认值初始化(调用缺省构造函数)。对象数组元素所属类的构造函数:l 不声明构造函数,则采用缺省构造函数。l 各元素对象的初值要求为相同的值时,可以声明具有默认形参值的构造函数。l 各元素对象的初值要求为不同的值时,需要声明带形参的构造函数。l 当数组中每一个对象被删除时,系统都要调用一次析构函数。 12. this 指针This 指针是一个隐含于每一个类的非静态成员函数中的特殊指针(包括构造函数和析构函数),它用于指向正在被成员函数操

13、作的对象。l 隐含于每一个类的成员函数中的特殊指针。l 明确地指出了成员函数当前所操作的数据所属的对象。 当通过一个对象调用成员函数时,系统先将该对象的地址赋给this指针,然后调用成员函数,成员函数对对象的数据成员进行操作时,就隐含使用了this指针。13. 文件与流的关系 ?14. 派生类中包含内嵌对象的构造函数执行顺序: 构造函数的执行顺序:(1)用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右)。(2)员对象进行初始化,初始化顺序按照它们在类中声明的顺序。(3)派生类的构造函数体中的内容。15. 派生类中包含内嵌对象的析构函数执行顺序:(与构造函数完全相反)16. c+特点

14、:(4个) C+语言具有以下特点:(1) C+是C语言的超集。它既保持了C语言的简洁、高效和接近汇编语言等特点,又克服了C语言的缺点,其编译系统能检查更多的语法错误,因此,C+比C语言更安全。(2) C+保持了与C语言的兼容。绝大多数C语言程序可以不经修改直接在C+环境中运行,用C语言编写的众多库函数可以用于C+程序中。(3) 支持面向对象程序设计的特征。C+既支持面向过程的程序设计,又支持面向对象的程序设计。(4) C+程序在可重用性、可扩充性、可维护性和可靠性等方面都较C语言得到了提高,使其更适合开发大中型的系统软件和应用程序。17. 二异性的概念和特点二义性问题:l 在多继承时,基类与派生类之间,或基类之间出现同名成员时,将出现访问时的二义性(不确定性)采用虚函数(参见第8章)或同名隐藏规则来解决。l 当派

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号