1、内联函数的概念和作用是什么?
内联函数是指在函数调用处直接嵌入函数体的函数,用关键字inline来修饰。关键字inline的作用是:请求编译器尽可能将函数调用形式变为内联(并不一定能成为内联函数)。成为内联函数的主要优势为以内存空间换编译/运行时间.
内联函数的限制:
(1)、函数体内不允许有循环语句或者选择语句。
(2)、函数体里不能出现递归。
(3)、函数体里不能有静态局部变量。
注意:内联函数的定义必须出现在内联函数第一次调用之前;
2、宏函数和自定义函数有什么区别?
宏函数 : #define MAX(a,b) a > b ? a : b
自定义函数 :
int max(int a,int b)
{
}
宏函数缺点:
(1)、不安全,傻瓜式替换,不做语法检查。
(2)、只能实现一些简单的功能,复杂的功能容易出错。
(3)、编译时间增加。
宏函数优点:
省去自定义函数发生调用(返回有时间的开销,形参的空间分配和释放有内存的开销)的过程,从而提高了运行效率。
自定义函数缺点:
函数调用/返回有时间的开销,形参的空间分配和释放有内存的开销。
自定义函数优点:
安全,能实现较为复杂的功能。
3、默认参数和占位参数
相较C来说,C++允许定义形参时给它一个默认值,当函数调用时没有指定这个参数的值,编译器会自动用默认值代替。例 int add(int a,int b=2);
在使用默认参数时注意只有参数列表后面部分的参数才可以提供默认参数值,并且 一旦在一个函数调用中开始使用默认参数值,那么这个参数后的所有参数都必须使用默认参数。例 int add(int a, int b=2,int c=2);
占位参数只有参数类型申明,而没有参数名申明。例 int add(int a,int b,int);
默认参数和占位参数可以结合使用。
4、什么是函数重载?
C++ 中允许多个函数拥有相同的名字,只要他们的参数列表不同就可以了,这就是函数的重载。函数重载定义为:用同一个函数名定义不同的函数,当函数名和不同的参数搭配时函数的含义不同 。
函数重载的判断标准如下:
(1)、函数的名称相同。
(2)、参数列表必须不同(如个数不同、类型不同、参数顺序排列不同(建立在类型不同的基础上)等)。
(3)、函数的返回类型可以相同,也可以不相同。
(4)、返回值不能作为重载的判定条件。
5、相较于C,C++中struct的升级有哪些?
(1)、C++中,结构体内可以定义函数。
(2)、结构体内可以对变量初始化。
(3)、
(4)、权限修饰符:public(公有的)、protected(受保护的)、private(私有的)。 注意:struct默认为共有属性、class默认为私有属性。
(5)、可继承。
(class和struct的作用是封装,即对外提供接口,对内隐藏数据。)
6、C语言和C++中命名规则是什么?
C语言中:小写字母加下划线 例:add_user.
C++(面向对象):驼峰式 首字母大写 例:AddUser 或 addUser
7、C++中的类型转换有哪些?
类型转换可以分为隐式类型转换和显式类型转换(强制类型转换)。其中,隐式类型转换比较常见,例如在表达式中存在short和int,则就会发生整型提升。C++有中四种强制类型转换,分别为:static_cast、dynamic_cast、const_cast、reinterpret_cast。
static_cast提供的是编译时期的静态类型检测。其适用于
(1).相关类型转化(内置类型)
(2).void * 和其他类型指针之间
(3).不能用于指针类型转化
dynamic_cast提供的是运行时的检测。
const_cast适用于去除指针或者引用的const
reinterpret_cast编译的过程中进行类型转换
reinterpret重新解释:处理无关类型的转换
特点:不安全,既不在编译器期也不在运行期进行检查,安全性完全由程序员决定
来源:CSDN
作者:写程序的工科女
链接:https://blog.csdn.net/tmh_15195862719/article/details/103995465