cppPrimer1

一.快速入门
1.main函数的返回值是一个状态指示器。
2.(IDE)集成开发环境, gcc a.c -o newName.out :-o 是重命名,否则默认是a.out
3.#include 指示必须单独写成一行:预处理语句必须单独成一行,虽然没找到啥官方理由,但是还是防止预处理语句的混乱才必须单独写成一行。<>,""标准(系统预定义的位置找),非标准(源文件所在的位置开始找)
4.定义在不同的命名空间中,则我们的变量名、函数名等都不怕重名的烦恼了。std::cout ::作用域操作符
5.注释不会增加程序大小,编译器会忽略所有注释。
6.\是转义字符:\' \" \_ \} \n \t \a (ctrl + c, ctrl +d quit) \\ 'r 
7.“abcdfe”:字符串字面量,即字符常量。常量不可修改。L'abcde' 宽字符字面量:c++中所有的字符常量都由编译器自动在末尾添加一个空字符,保存在全局只读存储区域。
二.变量和基本类型
8.wchar_t类型用于扩展字符集,比如汉语和日语--
9.内存中存放的是二进制,无序列,无结构的东西;应用层要怎么解释这些二进制位,完全依赖应用层用什么类型来解释。所以,类型决定了二进制的读取方式。
1.一般,short类型为半个机器字长,int类型为一个机器字长,long类型一般为1个或者2个机器字长。unsigned signed
2.符号位为1,代表负数;符号位为0,代表整数。
3.建议使用double而不使用folat,且大的类型不能复制给小的类型,会引起越界操作。
4.20 020 0x20 20u 20L   \ 继行符 
5.什么是对象:即对象是内存中具有类型的区域。
6.c++关键字:mutable , valatile ,explicit,  friend, inline, operator,template, typedef, typename,typeid, virtual, wchar_t 用的少的。extern
7.类型决定了分配给变量的存储空间的大小和可以在其执行上的操作。
8.初始化:直接初始化、复制初始化(拷贝构造函数)。
9.未初始化的变量,其对应的内存地址是具有垃圾值,只是该地址被标记为可用罢了。建议内置类型的对象都要初始化,虽然这样做并不总是必须的,但是会更加安全,防止垃圾值引起的运行问题。
1.全局作用域,局部作用域,类作用域,命名空间作用域,语句作用域:把变量定义在首次使用的地方是具有可读性的。建议。
2.引用&:效率+可变;const 引用&:效率且不可变。
3.typedef int myInt:可以用于复杂类型的定义,使其可读方便,
4.枚举成员是常量,常量是具有全局性质的。整形常量。struct class默认public private,仅仅这个区别,且struct只能public
5.因为头文件包含在多个源文件中,所以不应该含有变量或函数的定义,会造成重定义。const变量是可以放在头文件中定义的。因为编译器吧const作为常量进行编译,不会分配存储空间给他存储的。常量折叠类似。
三.标准库类型
1.命名空间使用using来声明:using namespace std; [or] using std::cout;
2.string::size_type 最好使用size_type来存储,不要用int来存储。虽然不知道size_type是什么类型,但是确定他是unsigned,比int大2倍,如果给int赋值了,那么就真的不太好。(赋值给空间小变量不安全不靠谱)string会轻易超过int的大小范围。
保存size()的最安全的方法是使用标准库类型的size_type;同时,[]下标的类型是unsigned类型size_type,最好不要用int.
3.大写子母比小写子母小。string == string (比较时)
4.#include <cctype> isalnum(c) tolower(c) iscntrl(c)......判断字符属性:子母?数字?控制字符?小写?大写?大小写转换!
5.我们应该尽量使用c++的头文件,比如<stdlib>,而不是<stdlib.h>,因为c++的头文件都被重新包含进了  std命名空间里面了,变量名称保持一致了。
6.vector不是一个类型,而是一个模板;vector<int>才是一个具体类型。(必须通过下标来访问数据,vector<int>::iterator ,const_iterator不能改变其值,const迭代其必须初始化。即const限定指针指向的值不可变,其指针存的地址是可以变的)
7.bitset类,位操作。
四.数组和指针:尽量避免使用数组和指针,应使用c++提供的vector,&引用等..
1.char a[10] = {'a', 'b', 'c', 'd'}; 数组初始化:
2.要避免未初始化的指针,int *ptr = NULL; 建议使用之前初始化所有变量。 NULL是从C语言继承下来的变量,定义在cstdlib头文件中。
3.void*, tupedef string *pstring, char *b = new char[2000]; delete[] b; 堆则可以动态创建数组哦。int *p=new int[n]; delete[] p;缺少[]会少释放空间,引起内存泄漏。
五.表达式
4.使用++i是个好习惯,不必担心差异问题。
5.注意。size(a),可以得出数组空间大小,但是不能得出指针所指的空间大小哦。
6.int *pi=new int; int*pi2 = new int();第二句话初始化为0了。
7.一旦释放指针指向的空间,立即将指针置为0,是个好习惯哦。一定哦。
第六章:语句
1.do {}while(); while(){};for(){};
2.try{}catch(){}catch(runtime_error err){}; throw finally{} //异常处理的存在,你有用得着的地方可以用,自己看着办,没有说不建议使用
 if() return 0;  ==>  if() throw runtime_error("Data must refer to same ISBN");
throw用于退出执行代码块,从而跳转到catch()代码块中,finall总是会执行的.
3.标准库异常类:exception, runtime_error, invalid_argument, length_error out_of_error,
4.预处理器调试:__FILE__ __LINE__ __TIME__ __DATE__
 #ifndef D_NOTBUG
    xxxx
 #endif //在开发的时候,可以这样设置;然后在发布的时候,我们定义 D_NOTBUG就可以消除这些bug调试代码信息了。
  2.断言:assert #include <cassert> assert(表达式),如果表达式为false 就终止程序,否则就Ok啦。作用:检验数据是否总是具有预期的大小。仅仅用于检查确实不可能的条件。
七.函数
1.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值