C++基础知识——缺省参数、命名空间、重载

一。  简单介绍C ++

        C ++是Ç语言的继承,它既可以进行语语言的过程化程序设计,又可以进行以抽象数据类型为特点的面向对象的程序设计.C语言几乎是C ++的一个子集,所以C语言能够支持的语法在C ++基本上都支持并需要使用。所以C ++在ç的基础上又有了许多特性.C ++不仅支持数据封装和数据隐藏,支持继承和重用,也支持多态性。

二。为什么C ++支持重载,C不支持?

1.函数重载的定义

        在同一作用域中,若一组函数的函数名相同,但是参数列表不同,即参数个数或者参数类型不同,返回值可相同可不同,这样的一组函数,就我们叫做函数重载。可以从定义中看出,函数的重载主要在于参数列表,而与返回值其实并没有什么关系。且重载只是一种用法,它不仅适用于函数,也适用与运算符,关于运算符的重载会在之后的博客介绍。

例如,以下的函数,均为重载函数:

int add(int a,char b)
{ 

} 

int add(int a,char b,char c)
{ 

} 

int add(char a,int b)
{ 

} 

int add(char b,int a)
{ 

} 

void add( char b,int a)
{ 

} 

...等等

要注意的是:main函数不能被重载,因为程序的入口只能有一个

2.程序的编译过程


    在链接的时候:

(1)C语言是拼接函数名去找要调用的函数;

(2)C ++则是根据函数名及参数类型来找所要调用的函数。

所以,若是Ç语言可以支持重载,在链接的过程中,若有多个相同函数名的函数,根本就不知道我们要调用的应该是哪一个。而相反的,C ++就没有这样的顾虑了。

三。  缺省参数

1.缺省参数的定义

        所谓的缺省参数,就是在声明函数的某个参数时为其指定一个默认值。在调用该函数的时候,如果不给它传参,就采用给以的默认值。

2.缺省参数的定义规则

(1)缺省参数只能从右向左缺省,且必须连续,比如:


(2)缺省值必须是常量

3,缺省参数的分类

(1)全缺省参数

        在调用全缺省参数时,可以穿0~参数个数个参参,比如,下例,可以传0~2个参数。

int add(int a = 1,int b = 1)
{ 
    返回a + b; 
} 

int main()
{ 
    加(); 
    添加(1); 
    添加(1,1); 
    返回0; 
}
(2)半缺省参数

        在调用半缺省参数时,至少要将未缺省的参数传给调用函数,如下例,可传1〜2个参数

int add(int a,int b = 1)
{ 
    返回a + b; 
} 

int main()
{ 
    添加(1); 
    添加(1,1); 
    返回0; 
}

四。命名空间

1. 命名空间的定义

        “命名空间“即命名空间,也称名字空间、名称空间。它的作用在于,名字隔离,解决全局命名冲突的问题。

2. 定义方式

        它以命名空间作为关键字开头,可以用花括号把文件的一部分扩起来,给它起一个名字比如:

namespace name1
{
    int a = 0;
}

namespace name2
{
    int a = 2;
}

3.访问方式 

       对于上述的两个命名空间中的相同变量A,在C ++中是完全没有任何问题的而且根据用户的意愿,我们可以任意访问其中任意一个一个。我们要用到一个“::”,它是域作用限定符,我们可以通过它指定我们要访问的是哪个域中的哪个变量。具体访问方式如下:

int main()
{
    cout<<name1::a<<endl; // 0,访问name1中a
    cout<<name2::a<<endl; // 2,访问name2中a
    返回0;
}


        运行结果如下:

  

4.使用namespace std;

      “using namespace std”即C ++程序中常见的一句代码。其中std就是一个命名空间,而它是C ++标准库的命名空间,C ++的所有组件都在std中。比如我们常用的输入“cin”,输出“cout”,我们在程序开始时指定“using namespace std”,就可以使用标准C ++库中所有成员。


        若是在程序开始不加这句,会出现以下情况:


        但是,我们也可以通过上面介绍的“::”指定域,具体如下:



猜你喜欢

转载自blog.csdn.net/lycorisradiata__/article/details/80941525