您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 北邮课件--C++(1)
C++编程(1)TangXiaosheng北京邮电大学电信工程学院BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cn课程简介o参考资料:nC++程序设计语言(特别版)裘宗燕(北京大学)译BjarneStroupstrup机械工业出版社ISBN7-111-10202-9/TP.242485RMBnC++Primer,LippmannC++标准程序库侯捷孟岩译nSTL源码剖析侯捷著o课时:34学时(17周)o教学网站:@buptnet.edu.cn考试o100道选择题(闭卷)BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cn第一章导论(致读者)o书本结构o学习C++oC++的设计o历史注记oC++的使用oC和C++o忠告BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cn1书本结构o导论:1-3章,有关C++语言,所支持的关键性程序设计风格,有关C++标准库的综述o第一部分:4-9章,C++内部类型o第二部分:10-15章,使用C++做面向对象和通用型程序设计o第三部分:16-22章,C++标准库o第四部分:23-25章,设计和软件开发BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cn2学习C++o昀重要的事情:关注概念,不要迷失在语言的技术细节中oC++支持多种不同的程序设计风格oC++支持一种逐步推进的学习方式o直接学习C++,而不是先学习Co大量查阅资料,每一种至少参考两个来源BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cn3C++的设计o重要设计原则:简单性,与C的高度兼容o无内部高级数据类型,没有高级的基本操作o尽力避免了那些即使不用也会带来运行时间或者空间开销的特征o能够使用传统的编译和运行时的环境oC++的类型检查和数据隐藏特征依赖于编译时对程序的分析,以防止因为意外而破坏数据的情况BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cn(1)效率和结构oC++以C为基础开发设计,大量维持了C作为一个子集,C++可以使用与C一样的函数调用及返回序列-或者其他效率更高的方式,而C的一个初始目标则是在大部分苛刻的系统程序设计中代替汇编oC++中特别强调程序的结构,这反映了C以来程序规模增长的情况o本书强调的是为提供通用功能、普遍有用的类型、库等的各种技术BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cn(2)哲学注记o程序设计语言要服务于两个相互关联的目的o1为程序员提供一种描述所需执行的动作的载体,这要求一种“尽可能接近机器的”语言o2为程序员提供一组概念,使他们能利用这些概念去思考什么东西是能够做的,这要求该语言“尽可能接近需要解决的问题”oC++的类概念已经被证明是一种极为强有力的概念工具BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cn4历史注记oC++大大受惠于C[Kernighan,1978]o其前驱为BCPL[Richards,1980](//注释)o一些灵感来自Simula67[Dahl,1970,1972](如类的概念、派生和虚函数)oAlgol68[Woodward,1974],如重载运算符和自由的将声明放置在可以出现语句的任何位置o模板机制功能部分受到Ada中generic的启发,部分受到Clu语言参数模块的影响BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cno异常处理机制部分受到Ada[Ichbiah,1979]、Clu[Liskov,1979]和ML[Wikstrom,1987]语言的影响oC++语言从1980年开始被研究组织使用,研究组织之外的昀初使用起于1983年oC++读做Cpluspluso名称意义:C+,C++,++C,DoC++设计的主要用途是为了个人程序员BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cno87年,爆炸性使用导致了标准化工作的开始oAT&T的贝尔实验室允许作者将C++参考手册的草稿和各种修订版本进行分发和共享oANSI的X3J16委员会1989年12月在HP的建议下建立起来o1991年该ANSIC++标准化变成ISO的C++标准化工作的一部分o标准化草案1995年4月给公众阅览,ISOC++标准1998年昀终被批准(ISO/IEC14882)BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cn5C++的使用oC++被应用到几乎每个领域o高效率使得C++被用来写操作系统或者驱动程序o可靠性、可管理、易扩充、易测试使得C++被用于银行、贸易、保险、通信以及军事领域o由于编写用户界面,C++也被用于很多数值的、科学的以及工程计算中去BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cnC++被广泛应用于教学与研究o对于教授基本概念而言足够清晰o对于深刻的项目而言足够现实、高效和灵活o对依赖各种不同开发和执行环境的组织或者研究机构而言,使用起来足够方便o对作为教高级概念和技术的媒介而言,足够的容易理解o对作为从学习到非学习使用的工具而言,足够商业化BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cn6C和C++oC被选做C++的基础语言的原因n通用的、简洁的、相对低级的n适合用于大部分系统的程序设计工作n可以在每个地方的任何系统运行n适应于UNIX程序设计环境BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cnC++继续与C兼容的原因o存在着成百万行的C代码可能从C++中获益,先决条件是不必将他们用C++重写o存在着成百万行的用C写出的库函数和功能软件代码可以从C++里使用,先决条件是C++能够与C连接兼容,语法相似o存在着数以十万计的程序员先了解C,这样他们能够很快速的学会C++oC++和C将在很多年中被同一些人用于同样的系统,因此其差异必须或者很小、或者很大,以昀大限度地减少错误和混乱的发生BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cn(1)给C程序员的建议oC++里几乎不需要宏(const,enum定义明显的常量,inline避免函数调用开销,template刻画一组函数或类型,用namespace避免名字冲突)o使用变量时可以随时声明o不要用malloc(new或者vector)o避免使用void*,指针算术,联合和强制o少用数组和C风格的字符串(string,vector)BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cn(2)给C++程序员的建议oC++在不断发展中,应该注意引进新的特征,很多以前看来是全新的程序设计技术现在已经变成可行的东西了o不断的学习(作者本身在写这本书的过程中就学到了不少东西)BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cn7忠告o编程是在为某个问题的解决方案中的思想建立起一种具体表示n如果能将“它”看成一个独立的概念,将其作成一个类n如果能将“它”看成一个独立的实体,将它作成某个类的一个对象n如果两个类有共同的界面,将此界面做成一个抽象类n如果两个类的实现有某些显著的共同东西,将这些共性做成一个基类n如果一个类是一种对象的容器,将它做成一个模板n如果一个函数实现对某容器的一个算法,将它实现为对一族容器可用的模板函数n如果一组类、模板等相互之间有逻辑关系,将它们放进一个名字空间去BeijingUniversityofPosts&Telecommunicationsyoung@buptnet.edu.cno在定义一个并不是实现某个像矩阵或复数这样的数学对象的类时,或者定义一个低层的类型如链表时:n不要使用全局数据(使用成员)n不要使用全局函数n不要使用公用数据成员n不要使用友元n不要在一个类里面放“类型域”:采用虚函数n不要使用内联函数,除非有效果显著的优化
本文标题:北邮课件--C++(1)
链接地址:https://www.777doc.com/doc-4043419 .html