C++入门篇---(1)命名空间与缺省参数

1.前言:

        c++兼容C语言,C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。
        因此你可以理解为c++是在c语言的基础上进行扩展的升级版.

        它补充了C语言语法的不足,以及C++是如何对C语言设计不合理的地方进行优化的.

所以入门篇讲解的就是c++在c基础上优化后的一些地方,对c++的语法进行熟悉.


2关键字

C++总计63个关键字,C语言32个关键字

asm do if return try continue
auto double inline short typedef for
bool dynamic_cast int signed typeid public
break else long sizeof typename throw
case enum mutable static union wchar_t
catch explicit namespace static_cast unsigned default
char export new struct using friend
class extern operator switch virtual register
const false private template void true
const_cast float protected this volatile while
delete goto reinterpret_cast

3.命名空间与输入输出

        在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染.

例如:

C++入门篇---(1)命名空间与缺省参数_第1张图片

        我定义了一个全局变量,对这个变量进行输出,编译器会报错,这是因为名为:rand在头文件中也存在,这就造成了一个问题,命名冲突,但是在未来写项目写代码,命名是必不可少的,因此,c++引入了命名空间,有效的解决这个问题.

C++入门篇---(1)命名空间与缺省参数_第2张图片

        接下来我们对上面这段代码进行解读.

  1. 第一行的头文件是一个io流的头文件,为下面的的cout使用就需要包含这个头文件(c++头文件不包含.h的后缀)
  2. namespace是定义了一个空间,这个空间的里面的命名不会影响其他同名的变量,但是在使用的时候,就需要命名空间名字+::来调用.
  3. 有没有不需要命名空间名字+::来调用呢,可以会觉得这样太麻烦了.答案是有的,在代码的第7行,使用using namespace + 空间名 这个是展开命名空间,直接就可以使用变量名调用,慎用!比较危险,日常谢谢短代码没什么,写项目建议不要展开.
  4. 第10行,cout是流插入,你可以简单理解成C语言中的printf,cout默认把数据插入到终端上,<<你可以简单理解成是一个方向,把箭头这一边的数据,给另一边.这一行的意思就是吧右边的数据给到cout,cout把拿到的数据显示到屏幕上.endl是是一个特殊的输出流操作符,你可以简单理解为'\n'的换行符.

      补充:调用变量名的时候,全局变量找不到的时候,是不会去命名空间里面找的,因此命名空间就像给里面的变量围了一堵墙,空间名+::变量名,好比就是钥匙.

命名空间内部不止可以存放变量,还可以存放类型,函数,甚至可以进行命名空间的嵌套.

C++入门篇---(1)命名空间与缺省参数_第3张图片

 一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中!

        这里可能还会涉及多个重名的命名空间,c++的处理是这样的:同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中.

下面是对上例的补充:

C++入门篇---(1)命名空间与缺省参数_第4张图片

 可以单独对某个空间的成员进行展开,更加灵活.

输入输出(上面谈及过一些):

说明:

  1. 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件以及按命名空间使用方法使用std。
  2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含头文件中。
  3. <<是流插入运算符,>>是流提取运算符。
  4. 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。
  5. C++的输入输出可以自动识别变量类型。
  6. 实际上cout和cin分别是ostream和istream类型的对象,>>和<<也涉及运算符重载等知识,
  7. 注意:早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h;旧编译器(vc 6.0)中还支持格式,后续编译器已不支持,因此推荐使用+std的方式。
std命名空间的使用惯例:
std是C++标准库的命名空间,如何展开std使用更合理呢?
  1. 在日常练习中,建议直接using namespace std即可,这样就很方便。
  2. using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对象/函数,就存在冲突问题。该问题在日常练习中很少出现,但是项目开发中代码较多、规模大,就很容易出现。所以建议在项目开发中使用,像std::cout这样使用时指定命名空间 +using std::cout展开常用的库对象/类型等方式

C++入门篇---(1)命名空间与缺省参数_第5张图片

        如上代码所示,cin是流提取,从键盘上获取的数据,存放到两个变量中,然后再将新的变量值输出.


4.缺省参数

概念:

        声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。

void Func(int a = 0)
{
    cout<

分类:

  • 全缺省参数:
void Func(int a = 10, int b = 20, int c = 30)
{
    cout<<"a = "<

你可能感兴趣的:(C++,c++,开发语言)