c++学习笔记(一)

来源:互联网 发布:noteexpress mac版 编辑:程序博客网 时间:2024/06/10 06:34
1.using 编译指令:尽量放在函数里面,也可以把经常用的using指令集中放在一个头文件中,还可以使用std::形式。
2.尽量使用const声明定义常量,一般必须进行初始化,不要使用#define
3.auto,自动类型推断,一般适用于复杂类型,并非为简单类型情况而设计。
4.在c++ struct 的用法与基本class 类型的用法差不多,只不过默认的数据成员类型不同。(位字段、共用体、枚举)
5.尽量使用new/delete以及new T[n]/delete[],不要使用malloc/free;
6.根据内存分配的方法,c++有3中管理内存的方法:自动存储(局部变量,栈来管理);静态存储(全局变量以及static变量);动态存储(new/delete 自由存储空间,即堆heap)
7.vector类(变长数组,堆中分配)的功能比数组强大,但付出的代价是效率稍低;在c+11新增了模板类array(定长数组),与数组一样,array对象的长度是固定的,也是用栈分配。
8.c+11基于范围的for循环:for(type/auto x:container){}  for(type &x: container){}
9.c++ 将数组名解释为其第一个元素的地址
10.C-风格字符串由一系列字符组成,以空值'\0'结束。
     C-风格字符串与常规数组的区别:字符串有内置的结束字符,这意味着不必将字符串长度作为参数传递给函数。但不以空值字符串结尾的char数组只是数组,而不是字符串。
11.使用typedef 可以减少输入量,让你编写代码不容易犯错,并让程序更容易理解。(尤其在函数指针上)
12.内联函数inline与宏很相似
13.引用变量 T& a=b表示a为b的别名,&不是地址运算符,而是类型标识符的一部分。引用变量主要用在函数的参数,表示使用的是原始的数据,而非副本。声明引用变量必须进行初始化。
14.左值参数是可被引用的数据对象。
15.应可能使用const
16.创建临时变量:实参类型正确,但不是左值;实参类型不正确,但是可以转化为正确的类型。
16.返回引用,const也可以用于返回引用。
17.显示具体化的原型和定义应以template<>打头,并通过名称来指出类型。具体化优于常规模板,而非模板函数优于具体化和常规模板。
18.注意显示实例化与隐式实例化。
19.decltype(expression) var ;在C++中,decltype作为操作符,用于查询表达式的数据类型
20.隐式转换函数形式:operator typename()
    转换函数必须为类方法;转换函数不能指定返回类型;转换函数不能有参数
    在构造函数声明中使用explicit可防止隐式转换,而只允许显示转换
21.模型别名:使用using alias=type,注意模板与非模板的区别,代替typedef
22.面向对象关注的是编程的数据方面,而泛型编程关注的是算法;它们之间的共同点是抽象和创建可重用代码,但它们的理念绝然不同。stl是一个容器类模板、迭代器模板、函数对象模板、算法函数模板的集合等。
23.若要使用指针,尽量使用智能指针。
0 0
原创粉丝点击