从C到C++的升级之函数升级
2017-02-20 18:12
190 查看
函数升级
1) 内联函数
A. 内联函数的使用
define MAX(a, b)(a)> (b) ? (a) : (b)
inline int max(int a, int b)
{
returna > b ? a : b;
}
B. 内联函数与带参宏函数的区别
a) 内联函数调用时,要求实参和形参的类型一致, 另外内联函数会先对实参表达式进行求值,然后传递给形参;而宏函数调用时只用实参简单的替换形参;
b) 内联函数是在编译时,在调用的地方将代码展开的,而宏则是在预处理时进行替换的;
c) 在C++中建议采用inline函数来替换带参数的宏
2) 函数重载:相同的作用域
A. 函数重载条件:如果两个函数名称相同,而参数顺序、个数、类型不同(函数返回值bu能作为重载条件)(需要考虑默认参数的情况)
B. name managling与extern “C”
名字改编:在C编译器中会把函数(如add(intx, int y, int z))改编为(add()),而在C++编译器中则改编为(add(int, int, int))。
示例:
add.c
C++调用C函数,加上extern “C”则不会报错。
3) 带默认参数的函数
int add(int x,int y = 6, int z = 7){return a + b + c;}
-->add(3,4,5);-->12
-->add(3)-->16
函数定义时加默认参数则声明时不能加,函数声明时加默认参数则函数定义时不能加。
1) 内联函数
A. 内联函数的使用
define MAX(a, b)(a)> (b) ? (a) : (b)
inline int max(int a, int b)
{
returna > b ? a : b;
}
B. 内联函数与带参宏函数的区别
a) 内联函数调用时,要求实参和形参的类型一致, 另外内联函数会先对实参表达式进行求值,然后传递给形参;而宏函数调用时只用实参简单的替换形参;
b) 内联函数是在编译时,在调用的地方将代码展开的,而宏则是在预处理时进行替换的;
c) 在C++中建议采用inline函数来替换带参数的宏
2) 函数重载:相同的作用域
A. 函数重载条件:如果两个函数名称相同,而参数顺序、个数、类型不同(函数返回值bu能作为重载条件)(需要考虑默认参数的情况)
B. name managling与extern “C”
名字改编:在C编译器中会把函数(如add(intx, int y, int z))改编为(add()),而在C++编译器中则改编为(add(int, int, int))。
示例:
add.c
intadd(int a, int b) { return a + b; } main.cpp
#include<iostream> usingnamespace std; #ifdef__cplusplus extern"C" { #endif int add(int a, int b); #ifdef__cplusplus } #endif intmain() { int num = add(6, 5); cout << num << endl; return 0; }
gcc –c add.c ar rcs libadd.aadd.o//生成静态链接库libadd.a g++ main.cpp –ladd–L.
C++调用C函数,加上extern “C”则不会报错。
3) 带默认参数的函数
int add(int x,int y = 6, int z = 7){return a + b + c;}
-->add(3,4,5);-->12
-->add(3)-->16
函数定义时加默认参数则声明时不能加,函数声明时加默认参数则函数定义时不能加。
相关文章推荐
- C++学习笔记7 C++函数的升级 上
- 【四】C++函数的升级(一)--内联函数
- 【C++第二课】---C到C++的函数升级
- C++中 函数的升级---内联函数、默认参数、占位参数、函数重载、C与C++结合
- 图像处理之其他杂项(四)之cvSnakeImage()函数代码升级,从C接口到C++接口:snakeImage()
- c++ 专题一 函数的升级1
- 【C++第二课】---C到C++的函数升级
- C++中对函数参数的升级
- C++之函数的升级
- 【C++第二课】---C到C++的函数升级
- c++学习笔记(3.函数的升级)
- c++函数的升级_4
- C++中string类的常用函数
- 测试一个函数的运行时间(C++)
- c++ 静态数据成员和静态成员函数
- C++ 指针 数组指针 二维数组与指针 直接解释底层 各种指针(字符指针,函数指针,数组指针)解释
- C++空类默认函数
- 你好,C++(26)如何与函数内部进行数据交换?5.1.3 函数参数的传递
- c/c++ 函数指针的用法
- C++中数组以及多维数组作为函数参数时的一些问题