c++/c语言

c:
const修饰的的值不能做左值,也就是说不能再‘=’左边
c++:
const修饰的变量为常量
const int a = 10;在编译期间将用到a的地方全部换成10
const (static)修饰全局变量时把全局变量符号变为为local符号,连接时不管local符号
extren 修饰const 把local符号变为‘g’
extren “c”为c++语法
通过中间层可以在不修改c++源码的情况下实现c和c++相互调用
c++编译器编译完成时会加入cplusplus这个宏,c语言没有这个宏
int a=0;
int & b=a;
引用一定要初始化//引用可以看作是给变量起了个别名//c++中引用的底层用指针实现,所以不能引用不能去地址的值
int a;
int * const&p=&a;
const修饰p此时会把a的地址拿出来放入另一个临时空间中,再把临时空间的地址赋值给p,不加const会出现错误,因为地址不能取地址
同时引用之后是无法改变引用目标的
valatile禁止编译器优化,使其在读取数据时从内存中读取//在多进程或多线程中使用//防止一个写数据时另一个读数据,读到别的数据
mutable 去除常属性

 inline 修饰的函数为内联函数,内联函数不生成函数符号,再函数的调用点直接展开,再调用较少的情况下内联函数的开销比普通函数的开销小
内联函数在编译时处理(有类型和安全检查),宏在预编译时处理(无类型和安全检查)
/* 内联在debug版本下不生效只在release版本下生效*/
inline 无符号生成
static 有符号生成
内联函数可调试,宏不可调试(内联只是编译器的建议)递归就不用内联函数(递归无法展开)
 
 函数重载:
 重载条件:函数名称相同
 重载三要素:在相同的作用域,同名,参数不同(c++符号生成规则与函数返回类型,函数名,形参类型,形参数量有关)
 函数重载为一个静多态

猜你喜欢

转载自blog.csdn.net/qq_43440004/article/details/83106389