C和C++的区别第一部分

1.C++可以给函数默认值

C++在定义时可以给函数默认值

1.int sum(int a,int b=10)

{

return a+b;
}

在调用sum 函数时不给参数b的值系统会默认b的值为10;

2.C++在给函数默认值时是从左至右如

int sum(int a=1,int b,int c)

int sum(int a=1,int b,int c)

是错的。因为系统会产生二义性不知道该给哪个参数赋值。

1.内联函数inline

c++的内联函数是在编译时 在调用点把内联函数的代码展开在调用点处,并不会产生函数符号

类如:

 Inline Int sum (int a,int b)

{return a+b;}

Main()

{

Int x=10;

Int y=20;

Sum(x,y);

}

编译时就是

Main()

{

Int x=10;

Int y=20;

x+y;

}

并不会给sum函数开辟个新栈,而是直接的代码替换。

看起来内联函数和宏很相像,那他们的区别在哪?

区别就是 宏是单纯的字符替换,在预编译的阶段,不会做任何的词法解析,类型检查,也就是说宏出错的可能性非常高,不安全。而inline内敛函数是在编译时期,会进行词法解析,类型检查,词法、类型有误就会编译失败。所以说,inline相当于安全版的宏。

内联函数只在本文件可见。

最后值得注意的是内敛函数只算一个给编译器的建议,也就是说编译器可能不会使用内敛,因为某些函数使用代码替换会导致错误,比如递归函数,递归的核心就是开辟栈帧递归数据然后层层计算最后收尾,简单的代码替换确定不了递归的尾巴?

3.函数的重载

c语言中函数名不能重复定义。

C++中函数的命名可以重复,但重名的函数提供的参数不能相同。因为C++的函数符号的产生是由函数名和参数类型决定的。

函数的重载必须得在同一个作用域内。

猜你喜欢

转载自blog.csdn.net/qq_41896615/article/details/84196171