1,操作符 << 的原生意义是按位左移,例:

1 << 2;

其底层的意义是将整数 1 按位左移 2 位,即:

0000 0001  ==> 0000 0100;

2,重载左移操作符,将变量或常量左移到一个对象中;

3,重载左移操作符编程实验:

1,main.cpp 文件:

 #include <stdio.h>

 const char endl = '\n';

 class Console
{
public:
Console& operator << (int i)
{
printf("%d", i); return *this;
}
Console& operator << (char c)
{
printf("%c", c); return *this;
}
Console& operator << (const char* s)
{
printf("%s", s); return *this;
}
Console& operator << (double d)
{
printf("%f", d); return *this;
}
}; Console cout; // cout 代表一个命令行 Console 对象; int main()
{
cout << << endl;
cout << "D.T.Software" << endl; double a = 0.1;
double b = 0.2; cout << a + b << endl; return ;
}

 2,输出结果:

 1

   D.T.Software

 0.300000

3,说明:

1,如果进行了左移的重载之后,那么程序将产生神奇的变化,在 main() 中不用 printf() 和格式化字符串 '\n' 了,因为编译器会通过重载的机制会为我们选择究竟使用哪一个重载机制;

4,C++ 标准库:

1,重复发明轮子并不是一件有创造性的事,站在巨人的肩膀上解决问题会更加 有效;

1,以后在工程开发中,如果有好的想法,想要实现某些模块,在真正的动手之前,一定要查阅是否有前辈实现了这个方法,如果有,可以找来看看,如果满足需求,直接拿来用,如果不是,再拿来改写(你的软件);

2,现在巨人的肩膀就是前人开发的 C++ 标准库;

2,C++ 标准库并不是 C++ 语言的一部分;

1,各大厂商规定,只要发布一款编译器,就要随之发布一款标准库;

3,C++ 标准库是由类库和函数库组成的集合;

4,C++ 标准库中定义的类和对象都位于 std 命名空间中;

5,C++ 标准库的头文件都不带 .h 后缀;

6,C++ 标准库涵盖了 C 库的功能;

1,C 库是 C++ 标准库子库,为了兼容 C 语言;

5,C++ 编译环境的组成:

1,编译模块支持 C++ 标准语法和 C++ 扩展语法,扩展语法对不同的编译器是     不一样的、不通用的;

2,C 语言兼容库,看上去和用起来和 C 语言库是完全一样的,因为编译器厂商都希望自己的 C++ 编译器被最大程度的接受,因此直接提供一样的 C 语言头文件供开发者使用,目的是让编译器能够直接编译成功用户所写的 C 语言代码,仅仅是为了推广 C++ 编译器,这里的 C 语言兼容库和 C++ 标准库中的 C 库子模 块在功能上是重复的,但是包含的头文件不一样而已;

3,编译器扩展库是由编译器生产厂商定制的,因编译器不同而不同;

6,C++ 标准库预定义了多数常用的数据结构:

1,<bitset>       <set>      <map>      <vector>

2,<deque>        <list>     <queue>    <stack>

3,<cstdio>       <cstring> <cstdlib>  <cmath>

1,相当于 stdio.h  string.h  stdlib.h  math.h;

2,C++ 标准库中的 C 库子模块;

3,这不是 C 语言兼容库;

7,C++ 标准库中的 C 库兼容编程实验:

1,main.cpp 文件:

 #include <cstdio>
// #include <stdio.h> //这里包含的不是 C 语言库的头文件,这是 C++ 编译器提供的 C 语言兼容库的头文件,不是标准库的一部分,不用打开 std;
#include <cstring> // C++ 中的标准库文件,同时一定要打开 std 命名空间;
#include <cstdlib>
#include <cmath> using namespace std; int main()
{
printf("Hello world!\n"); char* p = (char*)malloc(); strcpy(p, "D.T.Software"); double a = ;
double b = ;
double c = sqrt(a * a + b * b); printf("c = %f\n", c); free(p); return ;
}

 2,输出结果:

  Hello world!

  c = 5.000000

 3,C 语言中是没有前六行的写法,意味着推出的 C++ 编译器附带的自由 C++ 标准库的时候,C 语言的代码只有更改头文件后才能够编译通过,意味着已经存在的这些 C 语言代码不能够被编译通过,因此使用 C++ 的用户肯定很少,因此 C++ 编译器厂商就提出来自己的 C 语言兼容库,在使用方式上和 C 库一样;

4,使用标准库一定要打开标注库:

1,using namespace std;

8,C++ 标准库:

1,前人根据面向对象思想,认为在现实中显示器有一个对象,键盘也是有一个对象,面向对象思想就是要将现实世界无缝的搬到计算机程序领域;

2,C++ 标准库中有一个全局对象 cout,用来表示显示器,有一个全局对象 cin,用来表示键盘;

9,C++ 中的输入输出:

1,main.cpp 文件:

 #include <iostream>
#include <cmath> using namespace std; int main()
{
cout << "Hello world!" << endl; // cout 相当于命令行; double a = ;
double b = ; cout << "Input a: ";
cin >> a; // cin 重载右移操作符; cout << "Input b: ";
cin >> b; double c = sqrt(a * a + b * b); cout << "c = " << c << endl; return ;
}

 2,输出结果:

Hello world!

   Input a: 3

   Input b: 4

   c = 5

3,本节课后续所有输入输出采用 C++ 标准库,不在采用厂商提供的 C 兼容库;

10,小结:

1,C++ 标准库是由类库和函数库组成的集合;

1,没有 *.h 文件;

2,C++ 标准库包含经典算法和数据结构的实现;

3,C++ 标准库涵盖了 C 库的功能;

4,C++ 标准库位于 std 命名空间中;

C++标准库的初探的更多相关文章

  1. 把《c++ primer》读薄(3-2 标准库vector容器+迭代器初探)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 标准库vector类型初探,同一种类型的对象的集合(类似数组),是一个类模版而不是数据类型,学名容器,负责管理 和 存储的元素 ...

  2. 把《c++ primer》读薄(3-1 标准库string类型初探)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1:养成一个好习惯,在头文件中只定义确实需要的东西 using namespace std; //建议需要什么再using声 ...

  3. 16.C++-初探标准库

    在别人代码里,经常看到std命名空间,比如使用std命名空间里的标准输入输出流对象cout: #include<iostream> using namespace std; int mai ...

  4. 第32课 初探C++标准库

    有趣的重载: 实验: 将1左移到cout对象中. 将Test改名为Console,此时我们的本意是想让这个cout代表当前的命令行: cout代表命令行的一个实例,本意是想将1打印到命令行上. 我们在 ...

  5. 32,初探c++标准库

    1. 有趣的重载 (1)操作符<<:原义是按位左移,重载“<<”可将变量或常量左移到对象中 重载左移操作符(仿cout类) #include<stdio.h> co ...

  6. Python标准库--typing

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 模块简介 Python 3.5 增加了一个有意思的库--typ ...

  7. PHP SPL(PHP 标准库)

    一.什么是SPL? SPL是用于解决典型问题(standard problems)的一组接口与类的集合.(出自:http://php.net/manual/zh/intro.spl.php) SPL, ...

  8. C 标准库系列之locale.h

    locale.h 区域设置相关,主要针对时间日期.货币格式.字符控制.数字格式等以满足某区域的设置需要. locale设置类别主要包括以下几个宏定义的类别: LC_ALL:设置所有的类别: LC_CO ...

  9. C 标准库系列之errno.h

    errno.h 提供了一个整数全局变量errno,当系统调用或者库函数的错误事件发生时可能会修改该值,指明错误的原因,该值可在任何需要的地方被修改:一般情况不为0的值表示出现了异常或者错误. errn ...

随机推荐

  1. 攻防世界--csaw2013reversing2

    测试文件:https://adworld.xctf.org.cn/media/task/attachments/3f35642056324371b913687e770e97e6.exe 1.准备 打开 ...

  2. [三下五除二]在Eclipse上的JFinal_Demo

    承接上回在IDEA的JFinal的项目的导入,今次同样是同一个文件,但在Eclipse上运行.在Eclipse上运行官网的JFinal的例子是及其快捷. 打开Eclipse,并进入如下的界面. 点击导 ...

  3. elasticsearch 基础 —— _mget取回多个文档及_bulk批量操作

    取回多个文档 Elasticsearch 的速度已经很快了,但甚至能更快. 将多个请求合并成一个,避免单独处理每个请求花费的网络延时和开销. 如果你需要从 Elasticsearch 检索很多文档,那 ...

  4. 17-正交矩阵和Gram-Schmidt正交化

    一.视频链接 1)正交矩阵 定义:如果一个矩阵,其转置与自身的乘积等于单位向量,那么该矩阵就是正交矩阵,该矩阵一般用Q来表示,即$Q^TQ=QQ^T=I$,也就是$Q^T=Q^{-1}$,即转置=逆 ...

  5. ssh 操作 esxi 基本命令

    1.查看虚拟机: vim-cmd vmsvc/getallvms 会显示当前esxi上的虚拟机数量,没一个都有编号. 2.停用虚拟机:vim-cmd vmsvc/power.suspend + 之前命 ...

  6. 微信小程序(13)--页面滚动到某个位置添加类效果

    微信小程序页面滚动到某个位置添加类,盒子置顶效果. <!-- vh,是指CSS中相对长度单位,表示相对视口高度(Viewport Height),1vh = % * 视口高度 --> &l ...

  7. python指定cpu使用率,与内存占用率

    python指定cpu使用率,与内存占用率 """ runing.py -c 2 -t 0.01 -m 1000 -c cpu核数,不加-c参数为最大核数 -t cpu运 ...

  8. (转载)python判断一个字符串是否是小数

    转载自:牛牛杂货铺 最近在写代码的时候,发现一个问题,想判断一个字符串是不是一个合法的小数,发现字符串没有内置判断小数的方法,然后就写了一个判断字符串是否是小数,可以判断正负小数,代码如下: def ...

  9. 【串线篇】SQL映射文件select简单查询标签

    一.参数(Parameters)传递 单个参数 基本类型:取值#{hahaha}随便写 多个参数 <!--   public Employee getEmpById(Integer id,Str ...

  10. Java web入门之Http请求和响应

    三层架构 web层:JSP + Servlet.Struts 2.SpringMVC service层:Spring dao层:JDBC.DBUtils.Hibernate.MyBatis form表 ...