关于C++的几个小知识

为什么c++支持重载而C语言不支持重载?

因为C语言和c++的编译器不同的原因,假设我们在C语言和c++中同时定义一个void function(int x, int y)函数,首先进行编译,然后链接,生成城可执行文件,其中编译的过程就是把高级语言转变成汇编语言,同样的一个函数,在C语言中,我们刚才的函数名字就变成:_function存放在库中,但是在C++的中,编译之后,他的名字就变成:_function_int_int,和c++不同的就是在名字里面加上了参数的类型

如果我们在.c和.cpp文件中同时定义两个函数:①void function(int x,int y)②void function(float x,float y),在C语言编译之后的就会有两个_function的函数存在,这样子链接的时候就会出现错误,但是在C++中,此时在库中的名字分别是:_function_int_int 和 _function_float_float,这样子的话,就不会出现链接错误的问题了。

缺省参数

在C++中我们经常使用的一个方法就是给参数一个缺省值,当我们没有给形参传值的时候,函数就会自动的使用我们的缺省值,比如:int function(int x = 0,int y = 1),如果我们调用function函数没有传参:function(),那么此时x和y的值就是默认x=0,y=1,但是我们在设置缺省值的时候一定要注意,要从函数参数的右起第一个开始设置,不能跳过某个参数,换句话说就是:从左至右,第一个设置缺省参数的形参,右边的所有参数都要有缺省参数。

比如:void function(int a,int b,int c,int d)

          void funciton(int a,int b,int c =1,int d =1)    ✔

          void function(int a,int b,int c,int d= 1)     ✔

          void function(int a =0,int b =1,int c,int d)    ✖

          void function(int a,int b,int c = 0,int d)    ✖

命名空间

在C++头文件添加之后,我们通常会有这么一句代码:using namespace std;这就是使用我们的命名空间,为了避免在大规模的工程中,程序员使用各种各样的C++库,从而造成标识符命名的混乱,所以引入了namespace(命名空间),标准的C++库中所有的内容(不包括标准C库)有常量,变量,结构体,类,函数,都被定义在std(standard)中,所以才会在开始写入:using namespace std;

猜你喜欢

转载自blog.csdn.net/dy_1024/article/details/79728419