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. js事件循环了解一下

    https://segmentfault.com/a/1190000019900532

  2. 2018-2-13-wpf-绑定-TextLength-

    title author date CreateTime categories wpf 绑定 TextLength lindexi 2018-2-13 17:23:3 +0800 2018-2-13 ...

  3. 大哥带我走渗透8--CSRF的应用

    1.大哥给了一个CSRF实战视频,真的很简单,但是我今天晚上有点不在状态,很多简单的问题也没有想.所以做了一个多小时.这件事给我的启发就是,无论发生什么事,都不要影响自己的学习.先写点废话,真的真的, ...

  4. Linux知识-不断更新

    找到使用cpu最高的进程之使用cpu最高的线程的16进制号 shell命令行: ps -eo %cpu,pid | sort -n -k1 -r |head -n 1|awk '{print$2}'| ...

  5. 异常关机,同时出现:Last_IO_Errno: 1236,Last_SQL_Errno: 1594

    一主两从的结构,由于异常关机,导致两个从库都出现如下问题: mysql> show slave status \G;*************************** 1. row **** ...

  6. ARC096E Everything on It 容斥原理

    题目传送门 https://atcoder.jp/contests/arc096/tasks/arc096_c 题解 考虑容斥,问题转化为求至少有 \(i\) 个数出现不高于 \(1\) 次. 那么我 ...

  7. 数据库与缓存:3.mongodb的基本知识

    1. mongodb是什么? NoSQL 非关系型数据库,主要用于数据的海量存储.分为server数据存储端和client数据操作端. 1.1 关系型与非关系型数据库的区别? 1.sql:数据库--表 ...

  8. webpack CSS处理loader

    loader概念: 首先来介绍一下loader,之前我们用webpack来处理我们写的js代码,并且webpack会自动处理js之间相关的依赖.但是,在开发中我们不仅仅有基本的js代码处理,我们也需要 ...

  9. 【Java】maven打包源码、依赖插件

    <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactI ...

  10. paper 155:face/head pose estimation

    参考来源:http://www.cnblogs.com/lanye/p/5312620.html 人脸姿态估计:pitch,yaw,roll三种角度,分别代表上下翻转,左右翻转,平面内旋转的角度.   ...