C++基本语言:1.2命名空间简介、基本输入输出精解

发布时间:2023年12月27日

同名实体表示同名函数、同名变量以及同名的类定义

1)命名空间概念简介

命名空间 就是为了防止名字冲突而引入的一种机制。系统中可以定义多个命名空间,每个命名空间都有自己的名字,不可以同名

大家可以把这个命名空间可以看成一个作用域,我们在这个命名空间里定义函数,跟你另外一个命名空间里定义的函数,即便同名,也不互相影响

①命名空间定义:

②命名空间定义可以不连续,可以写在不同的位置,甚至写在不 同的源文件中。

如果以往没有定义该命名空间,那么“namespace 命名空间名”这就相当于定义了一 个命名空间

如果以往已经定义了该命名空间,那“namespace 命名空间名”这中写法就相当于打开已经存 在的命名空间并为其添加内容。

③外界如何访问某个空间中的radius()函数呢?

格式:命名空间名::实体名? 其中,::表示“作用域运算符”

命名空间作用范围就包含在这个cpp1中,对于别的cpp2中命名空间中的函数,cpp1中是不认识的

把函数声明(包括以后学习类,要把类的定义等内容)放到一个 头文件中

//当然上面需要把头文件包含进来

using namespace lisi ;//使用命名空间,这样就不用写lisi::

?

注意:如果这时候,你写了using namespace lisi ,using namespace zhangsan

那么由于它两中有一个同名函数radius,所以系统就不知道如何处理了

2)基本输入输出cincout精解

使用<iostream>库(输入输出流)什么叫做流,流就是 一个字符序列

#include<iostream>//这是个头文件,且没有扩展名

标准输出cout

说明:

(1)std::命名空间,标准库命名空间,大家要记这个名字

(2)cout 表示 console(黑窗口) output ;

cout:是一个对象,一个与iostream相关的对象。cout对象被 称为“标准输出” ,一般用于向屏幕输出一些内容,索性把cout当成屏幕 也是可以的

(3)<<:不是左移,他和cout一起用时,就被重载了。

?(往左扎):是一个“输 出”运算符,它的样子像锥子,直接扎到cout中去,表示将“?”右侧的 内容写到cout(屏幕)中去。

<<可以发当成函数,有参数。第一个参数在左边,就是cout对象;和那高兴大家很老…… 当成的第二个参数,在<<的右边;第一个参数是一个标准 输出对象(屏幕),第二个参数是自字符串

(4)\n:换行,跟C语言一个意思

“\n”VS std::endl:

区别:std::endl是一个模板函数名,相当于函数指针,建议先理解成函数 ,以后会详细讲解模板函数(按F12到里面)

(1)一般来讲,能看到std::endl的地方都有std::cout的身影。

(2)std::endl一般都在语句的末尾,有两个作用。

· 输出换行符\n。

· 刷新输出缓冲区,调用flush(理解成函数)强制输出缓冲区中 所有数据(也叫刷新输出流,目的就是显示到屏幕),然后把缓 冲区中数据清除。

输出缓冲区:一段内存,使用std::cout输出的时 候实际上是往输出缓冲区中输出内容。

那么输出缓冲区什么时候把内容输 出到屏幕上呢?有如下几种情况:

(1)缓冲区满了。

(2)程序执行到main函数中的return,要正常结束了。

(3)使用std::endl了,强制 刷新输出缓冲区把缓冲区的内容往屏幕上输出)因为使用后会调用flush()。

(4)系统不太忙的时候,会查看缓冲区内容,发现新内容就正常输出。所以有时使用std::cout时,语句行末尾是否增加std::endl都能将信息正常且立即输出到屏幕。

为什么要有这个输出缓冲区?

std::cout 直接输出信息到屏幕时,缓冲区的作用体现的不太明显,那如果是输出信 息到一个文件中,那么输出缓冲区作用就明显了,总不能输出一个字符, 就写一次文件,因为文件是保存在硬盘上,速度和内存比实在是慢太多 了,所以很有必要将数据临时保存到输出缓冲区,然后一次性地将这些数 据写入硬盘

? 的定义<< 返回的是一个写入了给定值的cout对象

下面四个式子等价:

“<<”运算符,右结合性问题

“?”到底是左结合性还是右结合性,其实跟编译器有 关,不同的编译器可能结果会不同,所以,尽量不要像上面这样写代码 ——避免在一行代码中多次(超过1次)改变一个变量的值(i值)

标准输入cin

cin也是一个对象,被称为“标准输入”

(1)cin也是一个iostream相关对象,被叫作“标准输入” ,可以 理解成键盘。

(2)?(往右扎):与cin一起使用的时候,就不是右移运算符,而是一个“输 入”运算符,它的样子也像锥子,但是是从cin往外扎(扎向变量,表示 把值传递给变量),和cout中的“?”方向刚好相反

(3)“?”的左侧运算对象是cin(键盘),也就是把从键盘上输入的数 据放入了“>>”右侧的变量中,于是,变量便有了值。

(4)“?”也是返回其左侧对象作为计算结果;下面两个式子等价

(5)之所以std::cout可以支持很多种不同类型数据的输出,是因为:

在类中写一个运算符(?)就好像写一个类中的成员函数一 样,可以把运算符“<<”看成一个函数。

简单来说?有很多个版本,有针对整型的版本,有针对字符串的版本等等

?:其实叫做运算符重载

文章来源:https://blog.csdn.net/weixin_47206649/article/details/135224081
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。