C/C++知识点复习笔记18/3/3

构造函数不能声明为虚函数


存储类型
1、自动变量auto:函数中所有的非静态局部变量.
2、静态变量static:在变量前加上static关键字的变量.
3、外部变量extern:一般用作全局变量作用域的扩展(还有定义外部函数的时候前面也可以有一个extern关键字).
4、寄存器变量register:一般经常被使用的的变量(如某一变量需要计算几千次)可以设置成寄存器变量,register变量会被存储在寄存器中,计算速度远快于存在内存中的非register变量.
生存时间:
自动变量:随着函数的进栈和出栈而创建和销毁
静态变量:长期存在静态存储区,直到程序结束
外部变量:长期存在静态存储区,直到程序结束
寄存器变量:离开函数值就会消失


栈内存空间在函数结束时就会被自动销毁


内联函数
内联函数是C++的增强特性之一,用来降低程序的运行时间.当内联函数收到编译器的指示时,即可发生内联:编译器将使用函数的定义体来替代函数调用语句,这种替代行为发生在编译阶段而非程序运行阶段.
inline int max(int a, int b)
{
 return a > b ? a : b;
}
优点:
1.它通过避免函数调用所带来的开销来提高你程序的运行速度.
2.当函数调用发生时,它节省了变量弹栈、压栈的开销.
3.它避免了一个函数执行完返回原现场的开销.
4.通过将函数声明为内联,你可以把函数定义放在头文件内.
缺点:
1.因为代码的扩展,内联函数增大了可执行程序的体积.
2.C++内联函数的展开是中编译阶段,这就意味着如果你的内联函数发生了改动,那么就需要重新编译代码.
3.当你把内联函数放在头文件中时,它将会使你的头文件信息变多,不过头文件的使用者不用在意这些.
4.有时候内联函数并不受到青睐,比如在嵌入式系统中,嵌入式系统的存储约束可能不允许体积很大的可执行程序.
内联声明只是一种对编译器的建议,编译器是否采用内联措施由编译器自己来决定.
编译器的内联与预处理宏是不同的.
所有类中定义的函数都默认声明为inline函数.
虚函数不允许内联.
定义在头文件中的函数不都是内联函数.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值