C++笔记记录贴1
来源:互联网 发布:linux查看版本命令 编辑:程序博客网 时间:2024/06/03 12:41
1、inline内联函数和普通函数的区别:
(1)inline函数没有普通函数标准的栈帧开辟和回退过程,效率高。
(2)inline在编译阶段处理,可写在头文件中或调用点前。
(3)inline只在release版本中起作用。在debug中和普通函数无异。
(4)用inline修饰的函数最后由编译器决定是否处理成内联,如递归函数等式就不能被处理为inline。
(5)inline在函数调用点把函数代码展开从而不产生函数调用的开销,不产生函数符号,所以其他文件不可访问该函数。
(inline需要加在函数定义前。类中定义的函数都是内联的 )
2、函数重载问题:
(1)C语言的函数符号生成只和函数名字有关。
(2)C++函数符号的生成,和函数名及参数列表有关。
(3)C++中函数名同,参数列表不同,称为重载。
(4)要重载的函数必须处在同一作用域。
(5)被const和volatile修饰的非指针和非引用形参不能构成重载。
3、const的使用:
(1)const type m;限定m不可变。
1)const在前面
const int n; //n是const
const char *p; //*p是const, p可变
const char* const p2; //p2和*p2都是const
2)const在后面
int constm; //m是const
char const * p3; //*p3是const, p3可变
char* const p4; //p4是const,*p4可变
char const* const p5; //p5和*p5都是const
(2)C中const可初始化一次,之后不可被修改,是常变量,可被指针修改,不可定义数组长度。
(3)C++中const必须初始化,不可修改,是常量,可被指针修改,可用来定义数组长度。
(4)C++中在编译时用const修饰的量会被替换成初始值。若初始时赋的变量,则会它变成常变量。
3、引用:
(1)可看做更安全的指针。int &b = a;给a取别名为b,修改b就是修改a。
(2)引用自带解引用,可以访问引用的内存。引用不参与类型。
(3)引用必须初始化,之后不可指向其他变量(不能重复引用)。
(4)引用的量必须可寻址。
(5)引用无法寻址的常量(如10或者寄存器内的)必须用const引用(如const int &a=10产生一个临时量:tmp=10,再对tmp引用)
(6)引用常量用常引用(如地址)。内置类型产生的临时量是常量(返回值在寄存器内无法寻址)。自定义类型(class,struct)产生的临时量是变量(返回值可指针、引用操作)。这里需要注意的一点是:如果自定义类型是隐式转换产生的临时量是常量。
1)a+++++b//根据贪吃法,分成a++ ++ +b这个表达式error。因为a++返回给临时量,他是常量。
2)++a+++b//++ a++ +b这个表达式error因为首先执行a++。
3)Cout<<(++a)+(++a)+(++a); →++a;++a;++a;cout<<a+a+a;//++a返回给临时量
4)Cout<<(a++)+(a++)+(a++); →cout<<a+a+a;a++;a++;a++; //a++返回给a
下面是指针和引用的应用:
int main()
{
int array1[10];
int array2[2][3];
char *array3[2];
int *p0 = array1;
int (*p1)[10] = &array1;
int (*p2)[3] = array2;
int (*p3)[2][3] = &array2;
char **p4 = array3;
char *(*p5)[2] = &array3;//sizeof(p5)=4
int (&p6)[10] = array1;//sizeof(p6)=40
int (&p7)[2][3] = array2;
char *(&p8)[2] = array3;
}
- MongoDB学习笔记记录(C#)
- C++笔记记录贴1
- 【C语言】学习笔记,持续记录
- 笔记 C语言零碎知识点记录
- Oracle 12C 安装笔记记录
- c语言记录.1
- Android笔记记录--1
- C语言学习记录1
- 记录-笔记-java(1)
- uboot学习记录笔记1
- Linux 相关笔记记录1
- 高质量程序设计指南<C/C++语言>笔记记录
- C记录
- C记录
- 记录笔记
- 笔记记录
- 笔记记录
- 笔记记录
- 乘积最大子序列-LintCode
- 同步异步与阻塞非阻塞
- 【简趣学习文本挖掘】用Python带你走进神秘的“谍纸天眼”...
- DataTable搜索框、分页、页脚数据显示、显示数据多少的属性设置
- WebApi发送HTML表单数据:文件上传与多部分MIME
- C++笔记记录贴1
- MFC 中查看失败信息 GetLastError
- Android炫酷的效果
- Linux下启用RNDIS host端与device端
- sleep和wait的区别
- 协调者布局 实现上下滑动
- Eclipse中的SVN操作
- 转发与重定向的区别
- 基于位置的服务——百度地图SDK练习