C++ 中一些零碎的知识点
来源:互联网 发布:js 判断event 编辑:程序博客网 时间:2024/05/29 03:29
1.初始化列表
对于内置类型,如int, float等,使用初始化类表和在构造函数体内初始化差别不是很大,但是对于类类型来说,最好使用初始化列表
在初始化列表中的对象直接调用拷贝构造函数,不用调用初始化构造函数,所以效率高。
在构造函数体中的对象会先调用自身的构造函数,再调用拷贝构造函数进行赋值。
对于const成员变量而言,必须在初始化列表中进行初始化。
2.函数返回值
不要返回局部变量的指针或引用
3.使用++i而不是i++,因为前者不需要返回临时对象,效率更高。
4.关于typedef
(1)定义类型的别名,而不是简单的宏替换
char *a,b;//a为char型指针,b为char型typedef char * PCHAR;PCHAR a,b;//a和b都是char型指针(2)在旧的C代码中,用来简化struct的定义
(3)定义与平台无关的类型
typedef unsign short UINT_16;
5.typedef和define的区别
(1)执行时间不同
typedef在编译期间执行,会进行类型检查
define在预处理期间进行简单的字符替换,不会进行类型检查
(2)功能不同
typedef用来定义类型的别名,简化类型定义,与struct结合使用
define可以用来替换类型,常量,变量等各种东西
(3)作用域不同
define没有特定的作用域
tydedef有作用域
(4)与指针结合时效果不同
6.指针常量与常量指针
char * const p;指针常量const char * p;常量指针char const *p;常量指针
7.指针数组与数组指针
int (*a)[4];数组指针,又叫行数组,a++将跨越4个int步长int *a[4];//指针数组,数组a中存储四个int型的指针int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a; //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0] p++; //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][]
8.new 操作符
int *p1 = new int[10]; //分配随机值int *p2 = new int[10]();//会被初始化
未初始化的全部变量会被初始化为0,局部变量是随机值。
9.关于变量析构顺序
C c;void main(){ A*pa=new A(); B b; static D d; delete pa;}先析构程序显式析构的,再析构局部变量。然后是全局变量。。同等级的,谁先被构造,谁后被析构。
全局变量作用域大于静态局部变量
10.虚函数的动态绑定仅在 基类指针或引用绑定派生类对象时发生
void fun(B0 ptr)//普通函数,这里使用的不是按地址传递,就会转化为基类对象{ ptr.display();}
阅读全文
0 0
- iOS开发中 一些零碎的知识点,
- C++ 中一些零碎的知识点
- 一些零碎的知识点
- 一些零碎的知识点
- springmvc的一些零碎知识点
- 一些零碎的ios知识点 ~
- Tableau的一些零碎知识点
- js的一些零碎知识点
- java多线程中一些零碎知识点
- android的一些零碎的知识点
- 关于一些java的零碎的知识点
- OS/390:一些零碎的知识点
- .net 基础的一些零碎知识点
- angularJS最近总结一些零碎的知识点
- 记·一些零碎的小知识点
- 一些零碎知识点
- C语言零碎的一些注意事项(更新中)
- C/C++零碎知识点
- [Office][Excel][001]如何将一行数据拆成多行?
- 多线程访问共享数据同步原因
- hibernate一对多与多对一映射
- 学习淘淘商城第一百零八课(Mycat的读写分离)
- 单链表中求倒数第几个节点
- C++ 中一些零碎的知识点
- CF
- selvet的生命周期
- Hbase 热点(数据倾斜)问题解决方案---rowkey散列和预分区设计
- 用Caffe+python如何训练一个手写体数字数别模型
- 算法设计与分析(18)-- Reverse Nodes in k-Group(难度:Hard)
- 回顶部总结一
- 最小生成树 prim算法
- Boolan* C++课程第十周笔记