c++基本知识

函数重载:C语言的符号生成规则:只和函数名有关
C++的符号生成规则:函数原型(函数头部),
1.返回值
返回值不能作为重载的依据,可能会产生二义性
2.函数名
C语言的符号生成规则只和函数名有关,如果把函数名作为返回值的话,就和C语言冲突了.
3.函数形参(1)参数个数(2)参数类型(3)参数顺序
函数形参作为函数重载的依据.
函数重载的三要素:1.同名2.不同参3.同作用域
malloc和new的区别:
1.new关键字,malloc函数
2.new自由存储区3.malloc堆
3.operator new,construct(可以做初始化) malloc(单纯开辟内容)
4.new可以重载,malloc不能重载
5.new可以调用malloc,malloc不能调用new
6.内存开辟,new抛出异常,malloc返回null,
7.new可以开辟常量,malloc不能
Malloc:void* malloc(size_t size);//malloc函数原型
Void free(void* ptr)
new delete
int* p=malloc(1)//两个错误
(导致内存泄漏)(不能申请1)
Int* p=new int;
int a;
Char* pc=new (&a) char(‘a’); (重定位new)
Const:C语言:常变量
编译阶段,看常变量有没有做左值,其他的处理和变量是一样的.
C++:常量
编译阶段,将用到常量的地方替换成常量初始化的值.
1.定义常量时一定要初始化.
2.不允许做左值.
3.不允许间接访问来修改常量内存 杜绝间接访问的风险
C:const修饰的全局变量 g
C++:const修饰的全局变量 l extern
常函数:函数后面加const//修饰this指针
引用:别名(引用底层以指针做支持)
1.引用一定要初始化.(引用是内存单元的别名)
2.引用不能引用不能取地址的数据
3.引用不能改变
4.引用变量只能使用引用变量所有引用的数据.
Inline函数:编译阶段:在代码调用点直接代码展开
内联函数和static修饰的函数的区别:
1.inline函数没有开栈和清栈的开销2.static有
2.Inline在调用点直接代码展开 static函数符号属性
Inline函数和宏的区别
1.inline 编译 类型检查和安全检查
2.宏 预编译 无
3.Inline是一个更加安全的宏
Inline的注意事项:
1.实现在头文件下
2.只在realease版本生效
3.给编译器的一个建议(递归,循环,switch)
4.基于实现,不是基于声明
Inline的缺点:
以代码膨胀为代价,空间换时间,有个阀值.
建议:
1.开栈开销>执行的开销(建议设为)
2.开栈开销<执行的开销(不建议设为)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值