赞
踩
首先我们先简单介绍一下C语言和C++:
1、可以传全局变量
2、甚至函数也可以作为默认值
3、默认值传值方式为 自右向左 依次赋值
重载函数是函数的一种特殊情况,C语言中的函数不能重名,同名函数会出现重定义。
但是为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的参数列表(指参数的个数、类型或者顺序)必须不同,也就是说同名函数完成不同的运算功能,这就是重载函数。
重载函数常用来实现功能类似而所处理的数据类型不同的问题。但不能只有函数返回值类型不同。
内联函数是在编译阶段,将调用点使用的内联函数的代码直接展开在调用点,并不会生成函数符号。
类似宏定义,但宏定义有几个缺点:
所以说,内联函数inline相当于安全版本的宏。
当然,inline函数也有自身的不足:
那就是以代码膨胀为代价(以空间换取时间)
所以对于inline函数的使用建议就是:
如果 函数堆栈的开销 > 函数执行的开销 才建议写成inline函数
inline函数的注意事项:
①:在C语言中,被const修饰的内容称作常变量。它本质是一个变量,因此,C语言中const修饰的变量并不能作为初始化数组长度的下标。
其特点只有一个:被修饰的内容不可以作为左值存在。
②:而在C++中,const修饰的内容叫做常量,在编译阶段会被当作立即数,可以当做初始化数组长度的下标。
其特点有两个:1.必须初始化,初始化的值必须是常量。 2.不允许普通的指针指向,只能用const类型的指针指向。
C语言里用const修饰的值可以不初始化,只是之后再没有机会对这个const修饰的变量赋值了。因此我们可以得出c语言里const定义的常变量和一般变量的区别很小,只是常变量定义后不能作为左值存在。但其本质,或者说是编译方式,和普通变量是一样的。
而在C++中,const修饰的量必须初始化,否则编译无法通过,即在编译的时候编译器会把使用const修饰的量都替换为其本身的值,因此就能作为数组下标了,因为编译时,编译器看到的下标并非const 定义的变量的名字,而是它对应的值的立即数。
在学习c++中,用到一些古老的c语言库时,在工作中,我们经常要使用C和C++混合编程,那么,在调用对方接口时,总是不可避免地出现问题。为了让双方和谐地工作,我们就得用到extern “C”。
extern "C"
exten‘c’的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。
C++调用C的接口:
cpp文件中加extern “C”
可以修改C++的文件
.cpp文件中加extern “C”(和C++调用C的接口处理方法一样)
不可以修改的C++的文件
利用一个.cpp的中间层的方法
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。