c++ primer心得

上传人:wm****3 文档编号:43112830 上传时间:2018-06-04 格式:DOC 页数:10 大小:19.34KB
返回 下载 相关 举报
c++ primer心得_第1页
第1页 / 共10页
c++ primer心得_第2页
第2页 / 共10页
c++ primer心得_第3页
第3页 / 共10页
c++ primer心得_第4页
第4页 / 共10页
c++ primer心得_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《c++ primer心得》由会员分享,可在线阅读,更多相关《c++ primer心得(10页珍藏版)》请在金锄头文库上搜索。

1、C+C+ PrimerPrimer 心得心得第一章:第二章:程序设计语言的基本要素第三章:基于过程的程序设计(即函数)第四章:基于对象的程序设计(类)4.17 号 学会了 by reference 和 by value 区别学会了抛出异常和处理异常(throw 和 try catch)学会了 using namespace 学会了 vector 向量及数组存取泛型算法的 sort(),reverse(),replace() 迭代器 iterator4 月 20 号数据型别,常量,变量,关键字,对象的定义(重要)4 月 22 号指针,字符串,const 类型,by reference(传址)4

2、月 27 号布尔类型,enum 类型,数组(涉及到泛型程序设计),vector5 月 3 号复数,typedef(类型标识符),volatile(限定修饰符),pair(关联),类基本介绍(setw()限定读取字符数) ,操作符重载(有点含糊)5 月 10 号表达式,表达式赋值,复数操作,5 月 16 号条件表达式,sizeof,new delete,逗号操作符5 月 26 号隐式转换,显式转换,强制类型转换5 月 27 号栈的进与出程序编写,for,switch,ctype.h6 月 12 号用类实现了链表的插入,删除操作6 月 13 号iterator 赋值,find(位置,位置,值)【返

3、回 iterator 型别】,insert(位置,|显示的数量|,值)(iterator 文件夹) ,erase()删除6 月 15 号getline(),get(),string:size_type pos=name.find(查找字串);find_first_of(2 个参数,第二个参数是从第几个位置开始),name.rfind()查找最后一个。find_first_not_of()第一个不与索引字符相匹配的字符;length();6 月 16学会定义 pair,优点,存储数据的同时,长度也存储起来了#include typedef pairshatck; vectorwords; mak

4、e_pair(short,string)配套使用sentence.substr(prev_pos,len);参数为起始位置和长度7 月 7 号find_first_of(比较参照物,pos)标点符号的处理 erase7 月 8 号tolower(内容) 大写换成小写 ctype.h locale.h比较 compare(起始位置,长度,比较内容)替换 replace(起始位置,长度,替换长度,替换内容):版本 1替换 replace(起始位置,长度,替换内容)版本 2find_last_of()erase(开始位置,结束位置)insert(pos,string)从 s1 上截取一部分:assi

5、gn(s1,开始位置,结束位置(取不到) st3.assign(str1,0,4)截取后,从别的地方继续截取,连接 append(s2,开始位置,结束位置)str3.append(str2,0,4) =最后一个参数是表示长度交换 swap() string s1,string s2 s1.swap(s2);比较 2 个字符串 string s1,string s2 pare(s2); s1s2 正数取一个字符串的某个字符 at() string s1(“fengtao“) ch=s1.at(index);7 月 9 号(map 主要作用是关联)用 map 进行信息统计 map 和 vector

6、 差不多其实map 的插入 trans_map.insert(valType(“gratz“,“grateful“);/vector:value_type valType插入的第二种形式 family“a“.push_back(“a1“);检验 (iter=trans_map.find(*it)!=trans_map.end()统计 stats*it+=1;set(例子太少,有点不太清楚,感觉跟 map 差不多)multimap multiset 不太会用stack pop(),top(),push()7 月 10 号传值,传递指针,引用的应用,传数组的时候只能传递类型,要想传递大小,得用 2

7、 个参数7 月 12 号当数组声明为引用的时候,数组的长度成为参数和实参的一部分参数模板 templateint max10=int (*max)10int (*max)10!=int *max10缺省实参只能用来替换函数调用缺少的尾部。当有几个参数时,第一个不能为缺省,除非其他都是缺省参数缺省实参只能在一个文件中被指定一次,即指定值只能为 1 次printf(“hello,%s“,username) %表明需要第二个实参,s 表示该实参为字符串命名返回值优化(自动将按值返回转换为按址返回)返回引用函数注意:1.返回一个指向局部对象(在这里指 Matrix)的引用,返回类型应该被声明为非引用,

8、 (函数结束后,引用变成未定义内存别名)Matrix或者 extern “C“. /复合 atoi()函数:将字符串转化为数字 #include 7 月 14 号main()处理命令行选项 即括号的参数(int argc,char *argv) /不是很明白?compare() 用法 pare(s2) /返回整型 指向函数的指针 int printf(.) 可以用 int (*pfi)(.) 表示,但是不可以用 int *pfi(.) 表示在指向函数类型的指针之间不存在隐式类型转换:返回值和参数列表要完全匹配才能赋值int (*text10)() = typedef int (*pi); pi

9、 text10()/typedef int (*PFI2S)(const string func ff(int); X正确的是:typedef int (*func)(int *,int); fun ff(int);extern “C“ 可以用 typedef 声明一个含有 C 函数指针的 C+函数的参数:extern “C“ typedef void PC(int); void f2(PC *pfParm)域:用来区分名字含义的一般上下文 局部域,名字空间域,类域全局函数:可以用 extern 声明,但是不分配内存 extern int i; int i;extern int i=1; in

10、t i; 后面的是错误的,不能指定显式初始值7 月 16 日函数的返回值不能是局部对象的地址,因为会随着函数的结束而自动消失,指向一个未分配的内存区static 静态 未初始化的静态会被程序自动初始化为 0,而自动对象会任意。new 表达式没有返回实际对象,而是返回指向该对象的指针。int *ix=new int(0);/初始化new 表达式操作顺序:从空闲存储区分配对象,然后用括号的值初始化对象指针 pi 的生命期和指针 pi 指向的对象的生命期的区别:delete 是释放后者,前者置 0 才行,不然会空悬指针(无法返回空闲存储区时,被称为内存泄漏)7 月 19 日 =域和生命周期auto_

11、ptr 当 auto_ptr 对象的生命周期结束时,动态分配的对象被自动释放头文件:#includeauto_ptrpi(new int(1024)auto_ptrpstr_auto(new string(“Bronrosaurus“);判断底层对象 2 种方式:get() 返回底层对象的地址int *pi=0; if(pi!=0).auto_ptr(int)pi; if(pi.get()!=0) . pi.reset(new int(1024);auto_ptr(int)pi; pi=new int(1024) 这是错误的* 对原有的字符串对象进行赋值比删除原有的字符串对象并重新分配第二个字

12、符串有效即 pstr_auto-assign(“feng“) 比 pstr_auto.reset(new string(“feng“)有效通过 release()可以使 2 个指针不能拥有同一对象所有权auto_ptrstr(str1.release() /交出对象拥有权数组指针时:char *str=new charstrlen(ix)+1 +1 是因为有一个空字符串 deletestrconst int *pci=new const int(1024) /const 对象一定要初始化 ,const 不能创建数组 const int *pci=new const int1024 这是错误的,

13、因为不好初始化名字命名空间 namespace 可以累积的 可以不连续/namespace fengin(); feng:in()嵌套名字空间:就近原则名字空间域中:cplusplus_primer:MatrixLib:matrixcplusplus_primer:MatrixLib:operator+(const matrix namespace 即将取代 staticnamespace 同时具有 typedef 的功能,namespace IBM=Internatial_Bussiness_Machinesusing 调用 2 种方式: using blip:bj (部分 namespac

14、e 成员可以用) using namespace blip;(namespace 成员全部可以用)using 声明:using blip:bj using 指示符 using namespace blip=重载函数=2 个或多个函数有相同的函数名,只要参数表唯一(参数个数相同或者参数类型相同)typedef double DOLLAR;extern DOLLAR calc(DOLLAR);extern int calc(double); 这个是错误的,虽然返回类型不同,但是参数个数和类型都相同void f(int*) void f(const int*) 属于重载void f(intvoid

15、print(double)调用:using blip:print;相同域中,都可以用,如果跟别的是不同的域,则会隐藏他们即定义重载函数:一定要在相同的域中=链接指示符(extern “C” )只能指定重载函数集中的一个函数extern “C“ void print(const char*)extern “C“ void print(int) 这是错误的指向重载函数的指针:extern void ff(vector)extern void ff(unsigned int)void (*pf1)(unsigned int)=templateType min(Type a,Type b)Type temp=aType min(Type a,Type b)typedef int Type;/错误,重

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

当前位置:首页 > 生活休闲 > 社会民生

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