函数默认值& C和C++的符号生成 &函数重载 &内联函数 &const在c和c++中的区别 & 基本数据类型的隐式转换规则

函数的默认值:

      1.自右向左依次赋值

      2.不能重复赋值

      3.一般给在声明上

例如;    int  Sum(int a,int b, int c = 10);

 

C和C++的符号生成:

      c语言中,符号生成只与  函数名  有关

      c++中,符号和函数原型有关(函数返回值+函数名+参数列表)

 

函数重载:

       函数重载是同名函数的关系,其生成的符号不同,重载的三要素:

                  1.同名

                  2.形参的类型,个数,顺序不同

                  3.同作用域

内联函数:

        inline函数在函数的调用点直接展开,因此无开栈清栈的过程, 其是以空间换时间,可能带来的问题是会使得目标文件膨胀;

        inline和static函数的区别:

                    是inline函数和普通函数的区别,即无栈的开辟

        inline和宏的区别:

                    inline是在编译过程中完成的,会有类型检查和安全检查的行为在,   而宏是在预编译阶段完成的,因此inline更安全

       注意:

               1.内联函数一般写在头文件下

               2.内联函数文本替换只在release版本中有效

               3.inline是给编译器的一个建议,不一定展开,一般内联函数中有循环/递归/swicth不会展开在代码中,将其当作普通函数                         处理

               4.内敛函数是基于实现的,inline关键字 放在函数实现点才有效 

关于c/c++中的关键字, c89:32个关键字     c98:引入了4个新的关键字,其中就有inline,并且加入了函数默认值的特性

                                    c++99标准

const在c和c++中的区别:

          c语言中:  const是修饰  常变量  的,仅仅只是看常变量有没有做左值,其他的和普通变量一样

          c++中: const修饰的是 常量  ,是不允许修改的,有以下三个点:

                      1.常量必须初始化,因为不允许修改,为了让其有效,必须初始化

                      2.编译器会 防止常量被修改的风险 的操作

                      3.在编译阶段把用到常量的地方直接替换成 常量的初始值,对于此点有以下代码:

const  int  a = 10;
int *p = (int *)&a;
*p = 20;
cout<< a <<endl;

此代码的输出结果为  10,虽然我们通过解引用将a所在的内存值膝盖为了 20,但是由于在编译阶段,cout中的值已经被进行了文本替换,所以输出结果为10;

基本数据类型的隐式转换规则:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值