c++个人笔记总结.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《c++个人笔记总结.pdf》由会员分享,可在线阅读,更多相关《c++个人笔记总结.pdf(105页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+个人笔记总结概述:一、C+语言语法基础(6)1 .从C 到 C+的过渡2 .类和对象3 .操作符重载4 .继承与多态5 .异常和I/O 流二、数据结构和算法1 .基本数据结构,堆栈、队列、链表、二叉树,实现和应用(2)2 .排序和查找算法三、模板和S T L1 .模板语法2 .S T L四、阶段项目简化的企业管理信息系统(M I S)-1 -第1页 共105页第一课从C到C+的过渡一、背景介绍算盘-面向硬件的编程电子计算机-机器语言的编程1 0 1 0-汇编语言的编程A D D-高级语言的编程F o rtra np ri n tf(%d”,1 2);-结构化程序设计C/P A S C L顺
2、序、分支、循环、函数-面向对象的程序设计C+/Ja v a/C#-面向问题的程序设计1 9 6 0 -A l g o l 6 0,算法语言,远离硬件,不适合进行系统开发1 9 6 3 -剑桥大学,C P L,在A l g o l 6 0 的基础上增加对系统开发的支持,复杂,不易掌握,不易使用1 9 7 0 -M I T,B C P L,C P L的精华版,易学易用,太慢,不实用1 9 7 2 -Ke n T h o m p o s o n,B 语言,通过运行时支持优化B C P L的性能,缺少类型1 9 7 3 -D e n n i s R i tc h i e,C 语言,用C重新实现U N
3、I X 内核1 9 7 8 -T h e C P ro g ra m m i n g La n g ua g e ,第一个 C 语言的事实标准1 9 8 9 -A N S I C,C 8 91 9 9 0 -I S O C,C 9 01 9 9 9 -I S O C 修订,C 9 91 9 7 X -B a j a rn e S tro us trup,S i m ul a 早期的面向对象语言,性能低下,B语言。1 9 7 9 -贝尔实验室,多核U N I X 系统仿真,C p re,通过扩展宏为C语言增加类似S i m ul a 的面向对象机制。C w i th C l a s s:S i
4、m ul a -类A l o g o 6 8 -操作符重载A d a -模板、名字空间S m a l l ta l k -引用、异常C 是 C+的子集,C+是对C的扩展。1 9 8 3 -C+命名1 9 8 5 -C F ro n t 1.0,第一款商用C+编译器1 9 8 7 -G N U C+1 9 9 0 -B o rl a n d C+1 9 9 2 -M i c ro s o ft C+,I B M C+1 9 9 8 -I S O C+9 82 0 0 3 -I S O C+0 32 0 1 1 -I S O C+2 0 1 1/C+l l/C+0 x-2-第 2 页 共 105页
5、二、C+语言的使用领域:1 .游戏开发:强建模能力,性能高。2 .科学计算:F O R T R A N,C+算法库。3 .网络和分布式:A C E 框架。4 .桌面应用:VC/M F C,O f f ic e,Q Q,多媒体5 .操作系统和设备驱动:优化编译器的发明使C+在底层开发方面可以和C向媲美。6 .移动终端既需要性能,同时又要有面向对象的建模。三、C+比C更丰富1 .支持面向对象,将问题域和方法域统一化。宏观面向对象,微观面向过程。2 .支持泛型编程。int a dd(int a,int b)te mpla te T a dd(T a,T b).3.支持异常机制。int f unc (
6、void)int ma in(void)if (f unc ()=-1)错误处理;4.操作符重载四、第一个C+程序1 .编译器:g+,如果用gc c 需要带上T stdc+,指定其使用标准C+的运行库。2 .源文件扩展名:.c pp/.c c/.C/.c x x/.c+,最好用.c pp3.头文件:ttinc lude 大多数标准库头文件都没有.h 后缀。4 .输出:c out-标准输出对象输入:c in-标准输入对象插入运算符:提取运算符:5 .std:所有标准库的函数、对象、类型都位于std名字空间中。-3-第3页 共1 0 5页五、名字空间1.对程序中的标识符(类型、函数、变量),按照某
7、种逻辑规则划分成若干组。2 .定义名字空间namespace名 字 空 间 名 名字空间成员;3.使用名字空间1作用于限定符:名字空间名:名字空间成员,表示访问特定名字空间中的特定成员。例子:ttinc lude int ma in(void)std:c out H e llo,W orld!std:e ndl;int i;doub le d;c ha r s 2 5 6 ;/sc a nf&i,&d,s);std:c in i d s;/printf (%d%lf%s n”,i,d,s);std:c out d s J n,;re turn 0;)2名字空间指令:using namespac
8、e 名字空间名;在该条指令之后的代码对指令所指名字空间中的所有成员都可见,可直接访问这些成员,无 需 加“:二例:using namespace std;3名字空间声明:using名字空间名:名字空间成员;将指定名字空间中的某个成员引入当前作用域,可直接访问这些成员,无 需 加“:”。-4-第 4页 共 1 0 5 页4.匿名名字空间如果一个标识符没有被显示地定义在任何名字空间中,编译器会将其缺省地置于匿名名字空间中。对匿名名字空间中的成员通过“:名字空间成员”的形式访问。5.名字空间合并6.名字空间嵌套n a m e s p a c e n s l n a m e s p a c e n s
9、 2 n a m e s p a c e n s 3 v o i d f o o (v o i d).)n s l:n s 2:n s 3:f o o ();u s i n g n a m e s p a c e n s l:n s 2:n s 3;f o o ();例子:名字空间t t i n c l u d e u s i n g n a m e s p a c e s t d;/n a m e s p a c e v o i d p r i n t (i n t m o n e y)c o u t m o n e y e n d l;/)/农行名字空间n a m e s p a c e
10、a b c i n t b a l a n c e =0;v o i d s a v e (i n t m o n e y)b a l a n c e +=m o n e y;)v o i d d r a w (i n t m o n e y)b a l a n c e 一 二 m o n e y;)n a m e s p a c e a b c (v o i d s a l a r y(i n t m o n e y)b a l a n c e +=m o n e y;)-5-第 5 页 共 105页v o i d p r i n t (i n t m o n e y)c o u t “农行
11、:”;:p r i n t (m o n e y);)/建行名字空间n a m e s p a c e c c b (i n t b a l a n c e =0;v o i d s a v e (i n t m o n e y)b a l a n c e +=m o n e y;)v o i d d r a w (i n t m o n e y)b a l a n c e 一 二 m o n e y;)v o i d s a l a r y(i n t m o n e y)b a l a n c e +=m o n e y;)i n t m a i n (v o i d)u s i n g
12、n a m e s p a c e a b c;/名字空间指令s a v e (5000);c o u t 农行:b a l a n c e e n d l;d r a w (3000);c o u t “农行:b a l a n c e 1例子:#i n c l u d e u s i n g n a m e s p a c e s t d;s t r u c t S t u d e n t c h a r n a m e 128;i n t a g e;v o i d w h o (v o i d)成员函数c o u t 我 叫 n a m e :今年 a g ew h o ();s t
13、r u c t A ;c o u t s i z e o f (A)e n d l;r e t u r n 0;)2.联合增加了匿名联合的概念。借用联合语法形式,描述一些变量在内存中的布局方式。i n t m a i n()UN IO N(i n t a;c h a r c h 4;);a=0 x l 2345678;)定义联合变量时,可以不加u n i o n-7-第7页 共105页例子:t t i n c l u d e u s i n g n a m e s p a c e s t d;i n t m a i n (v o i d)/匿名联合u n i o n i n t x;c h a
14、 r c 4 /*=A,B,C,D*/;;c o u t (v o i d*)&x (v o i d*)c e n d l;x =0 x 12345678;f o r (i n t i =0;i 4;+i)c o u t h e x (i n t)c i ;c o u t e n d l;r e t u r n 0;)3.枚举枚举是一个独立的数据类型。C:e n u m E a,b,c);e n u m E e;e =a;e =1000;C+:e n u m E a,b,c);E e;e =a;e =b;e =c;b=l;/ER R O R !e =1000;/ER R O R !e =1;/
15、ER R O R !第 8 页 共 105页例子:ttinclude using namespace std;int main(void)enum E(a,b,c);E e;e=a;c 二 b;e=c;/e=1000;报错/e=1;报错 return 0;七、C+的布尔类型,跟在c o u t 后面可以b o o l a l p h ab o o l b =t r u e;b =f a l s e;c o u t s i z e o f (b)e n d l;/1b =100;b =1.234;b =h e l l o”;b =A;八、C+中的运算符别名&-a n d|-o r&-b i t
16、a n d-x o r -9-第9页 共105页九、C+中的函数L 重载:条件在同一个作用域中,函数名相同,参数表不同的函数,构成重载关系。C+编译器会对程序中的函数做换名,将参数表中的类型信息汇合到函数名中,以保证函数名的唯一。通过e x t e r n C”,可以要求编译器不做C+换名,以方便在C 语言的模块中使用 C+编译生成的代码。方式一:e x t e r n C i n t a d d (i n t a,i n t b)r e t u r n a +b;)i n t s u b (i n t a,i n t b)r e t u r n a -b;)方式二:e x t e r n C
17、 i n t a d d (i n t a,i n t b,i n t c)r e t u r n a +b +c;2.缺省参数和哑元参数1)如果调用一个函数时,没有提供实参,那么对应形参就取缺省值。2)如果一个参数带有缺省值,那么它后边的所有参数必须都带有缺省值。3)如果一个函数声明和定义分开,那么缺省参数只能放在声明中。4)避免和重载发生歧义。5)只有类型而没有名字的形参,谓之哑元。i+-o p e r a t o r+iV I:v o i d de co de (i n t a r g).V 2:v o i d de co de (i n t).例子L重载与缺省值#i n cl u de
18、 u s i n g n a m e s p a ce s t d;v o i d f o o (i n t a =10,do u b l e b =0.01,co n s t ch a r*c=t a r e n a);函数 1v o i d f o o (v o i d)函数 2函数1 与函数2 构成重载关系v o i d b a r (i n t)函数 3-10-第 1 0 页 共 105页co u t ”b a r(i n t)e n dl;v o i d b a r (i n t,do u b l e)函数 4co u t ”b a r(i n t,do u b l e)”e n d
19、l;)函数3 与函数4 构成重载关系i n t m a i n (v o i d)f o o (1,3.14,h e l l o);调用函数 1f o o (1,3.14);调用函数 1f o o (1);调用函数1/f o o ();/歧 义,可以调用函数2,但也可以调用函数1,因为函数1在不提供实参的情况下,可以取缺省值。b a r (100);调用函数3b a r (100,12.34);调用函数 4r e t u r n 0;例子2:重载与作用域#i n cl u de u s i n g n a m e s p a ce s t d;n a m e s p a ce n s l (i
20、 n t f o o (i n t a)函数 1co u t ,zn s l:f o o(i n t)z/e n dl;r e t u r n a;);n a m e s p a ce n s 2 do u b l e f o o (do u b l e a)函数 2co u t n s 2:f o o(do u b l e)“e n dl;r e t u r n a;);i n t m a i n (v o i d)u s i n g n a m e s p a ce n s l;/名字空间指令u s i n g n a m e s p a ce n s 2;/名字空间指令co u t f
21、o o (10)e n dl;/10调用函数L作用域可见n s 2与 n s l,所以与函数2 构成重载co u t f o o (1.23)e n dl;/I.2 3 调用函数2,作用域可见n s 2与 n s l,所以与函数 1构成重载-11-第 1 1 页 共 105页using n sl:foo;名字空间声明(当同时出现名字指令与名字空间声明,则名字空间声明会隐藏名字空间指令)cout foo(10)endl;/1 0,调用函数1,只可见名字空间n s l的foo(),所以也并不构成重载。cout foo(1.23)endl;/1 0,调用函数1,只可见名字空间n s l的 foo()
22、,所以也并不构成重载。using ns2:foo;名字空间声明cout foo(10)endl;/1 0,调用函数1,可见名字空间n s l与名字空间ns2的 foo(),所以构成重载。cout foo(1.23)endl;/I.2 3,调用函数2,可见名字空间n s l与名字空间ns2的f。,所以构成重载。return 0;3 内联1)编译器用函数的二进制代码替换函数调用语句,减少函数调用的时间开销。这种优化策略成为内联。2)频繁调用的简单函数适合内联,而稀少调用的复杂函数不适合内联。3)递归函数无法内联。4)通过inline关键字,可以建议编译对指定函数进行内联,但是仅仅是建议而已。inl
23、ine void foo(int x,int y).-12-第 1 2 页 共 105页十、C+的动态内存分配m a l l o c/ca l l o c/r e a l l o c/f r e e1.n e w/de l e t e:对单个变量进行内存分配/释放2.n e w /de l e t e 口 :对数组进行内存分配/释放例子:new 与 deletet t i n cl u de u s i n g n a m e s p a ce s t d;i n t m a i n (v o i d)/i n t*p i =(i n t*)m a l l o c(s i z e o f (i
24、 n t);/f r e e (p i);c 中的方法i n t*p i =n e w i n t;*p i =1000;co u t *p i e n dl;de l e t e p i;一定要释放内存,否则会造成内存泄露,很严重p i =N U LL;不要忘记这个,虽然不会报错,但是要有好习惯/*p i =2000;co u t *p i e n dl;p i指向的内存地址已经被释放,被初始化为指向N U LL*/p i =n e w i n t 10;f o r (s i z e _ t i =0;i 10;+i)p i i =i;f o r (s i z e _ t i =0;i 10
25、;+i)co u t p i i ;co u t e n dl;de l e t e口 p i;千万记住n e w要用de l e t e来释放内存p i =N U LL;p i =n e w i n t (1234);用n e w分配内存的同时初始化赋一个值。co u t *p i e n dl;/1234de l e t e p i;p i =N U LL;ch a r b u f 4 =0 x 12,0 x 34,0 x 56,0 x 78;p i =n e w (b u f)i n t;co u t h e x *p i e n dl;/de l e t e p i;co u t (v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 个人 笔记 总结
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内