1. 有趣的重载

(1)操作符<<:原义是按位左移重载“<<”可将变量或常量左移到对象中

重载左移操作符(仿cout类)

 #include<stdio.h>

 const char endl = '\n';                  //将换行定义为一个常量

 class Console                           //Console表示命令行对象
{
public:
Console& operator << (int i) //赋值重载函数,返回值变为Console&引用
{
printf("%d\n", i);
return *this; //当前对象自身返回,保证连续传送值
} Console& operator << (char c) //重载函数
{
printf("%c\n", c);
return *this;
}
Console& operator << (const char* s) //重载函数
{
printf("%s\n", s);
return *this;
}
Console& operator << (double d) //重载函数
{
printf("%f\n", d);
return *this;
} }; Console cout; int main()
{
////cout.operator<<(1);
//cout << 1; //将1的整数左移到cout
//cout << '\n'; //换行
// cout << 1 << '\n'; //error,重载函数返回值是void不能连续左移,将返回值用 Console&实现 cout << <<endl; //避免输入字符\n
cout << "LOVE.you" << endl; double a = 0.1;
double b = 0.2;
cout << a + b << endl; return ;
}

2. C++标准库

(1)C++标准库

  • C++标准库并不是C++语言的一部分

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

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

  • C++标准库头文件不带.h后缀

  • C++标准库涵盖了C库功能

(2)C++编译环境的组成

          

C语言兼容库:头文件带.h,是C++编译器提供商为推广自己的产品,而提供的C兼容库(不是C++标准库提供的)。

C++标准库:如stringcstdio(注意,不带.h)是C++标准库提供的。使用时要用using namespace std找开命名空间。

编译器扩展库:编译器自己扩展的

(3)C++标准库预定义的常用数据结构

  ①<bitset>、<set>、<deque>、<stack>、<list>、<vector>、<queue>、<map>

  ②<cstdio>、<cstring>、<cstdlib>、<cmath>——(C++标准库提供的C兼容库!

【编程实验】C++标准库中的C库兼容(如cstdio)

   //不是c语言标准库也不是c++标准库,是c++厂商为了推广自己的产品提高的c兼容库
/*#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h> */ //C++标准库提供的C兼容库
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath> using namespace std; //使用标准库要打开,namespace std命名空间 int main()
{
//以下的代码是使用C++标准库提供的C兼容库写的, //从形式上看,与C代码写的完全一样,这就是C++ //为C提供了很好的支持的例子! printf("holle world!\n"); char* p = (char*)malloc(); //strcpy(p, "sjdewhfj"); double a = ;
double b = ;
double c = sqrt(a * a + b * b); printf("c=%f\n", c); free(p); return ;
}

4. C++输入输出

  

 #include<iostream>
#include<cmath> //基于c++标准库实现, 不使用厂商提供的c语言兼容库 using namespace std; int main()
{
//printf("hello world!");
cout << "hello world!" << endl; //cout为全局对象------输出(重载左移操作符)
//endl---换行 double a = ;
double b = ; cout << "input a :";
cin >> a; //cin为全局对象------输入(重载右移操作符) 键盘上的输入传送带a cout << "input b :";
cin >> b; double c = sqrt(a * a + b * b);
cout << "c=" << c << endl; //将字符串 "c=" 和c的结果输出到cout对象上,也就是传送到显示器上,显示器对应的是命令行 return ;
}

5. 小结

(1)C++标准库是由类库和函数库组成的集合---------使用c++标准库里的类和函数只需要包含头文件(不带.h),里面包含子库实现了c语言的全部功能

(2)C++标准库包含经典算法数据结构实现

(3)C++标准库涵盖了C库的功能(子库实现)

(4)C++标准库位于std命名空间中

32,初探c++标准库的更多相关文章

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

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

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

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

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

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

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

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

  5. C++标准库的初探

    1,操作符 << 的原生意义是按位左移,例: 1 << 2; 其底层的意义是将整数 1 按位左移 2 位,即: 0000 0001  ==> 0000 0100: 2,重 ...

  6. 把《c++ primer》读薄(3-3 标准库bitset类型)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. //开头 #include <bitset> using std::bitset; 问题1.标准库bitset类型( ...

  7. python标准库之字符编码详解

    codesc官方地址:https://docs.python.org/2/library/codecs.html 相关帮助:http://www.cnblogs.com/huxi/archive/20 ...

  8. Boost程序库完全开发指南——深入C++“准”标准库(第3版)

    内容简介  · · · · · · Boost 是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉. Boost 由C++标准委员会部分成员所设立的Bo ...

  9. C语言的本质(25)——C标准库之内存管理

    程序中需要动态分配一块内存时怎么办呢?我们可以定义一个缓冲区数组,但是这种方法不够灵活,C89要求定义的数组是固定长度的,而程序往往在运行时才知道要动态分配多大的内存,例如: void foo(cha ...

随机推荐

  1. 执行dotnet *.dll启动项目,如何修改环境变量----ASPNETCORE_ENVIRONMENT

    docker环境: 启动容器时,添加参数:-e " ASPNETCORE_ENVIRONMENT=Development" windows系统: 命令行,以管理员身份运行:setx ...

  2. 腾讯T8纯手写66个微服务架构设计模式,全部学会真的“变强”了

    微服务的概念虽然直观易懂,但“细节是魔鬼”,微服务在实操落地的环节中存在诸多挑战.我们在为企业提供PaaS.人工智能.云原生平台等数字化转型解决方案时也发现,企业实现云原生,并充分利用PaaS能力的第 ...

  3. Dubbo及注册中心原理

    本文首发于微信公众号[猿灯塔],转载引用请说明出处 今天是猿灯塔“365天原创计划”第4天. 今天呢!灯塔君跟大家讲: 一.Dubbo意义 网站应用的架构变化经历了一个从所有服务分布在一台服务器上(A ...

  4. 【Python】any() 或者 or

    前言 在我之前的文章中有any()和all()的对比:any()和all()对比其中介绍了any()函数的基本特性---可迭代对象中有任意一个不为False的时候,返回True,如果可迭代对象为空的话 ...

  5. ie浏览器不支持多行隐藏显示省略号

    平时在写页面过程中,相信大家都遇到过文本显示多行后用省略号代替的问题,来看看代码: p{ display: -webkit-box; overflow: hidden; text-overflow: ...

  6. Apache Hudi重磅特性解读之全局索引

    1. 摘要 Hudi表允许多种类型操作,包括非常常用的upsert,当然为支持upsert,Hudi依赖索引机制来定位记录在哪些文件中. 当前,Hudi支持分区和非分区的数据集.分区数据集是将一组文件 ...

  7. centos7篇---开启防火墙和特定端口

    开启防火墙服务 以前为了方便,把防火墙都关闭了,因为现在项目都比较重要,害怕受到攻击,所以为了安全性,现在需要将防火墙开启,接下来介绍一下步骤.1, 首先查看防火墙状态: firewall-cmd - ...

  8. Java String:字符串常量池(转)

    作为最基础的引用数据类型,Java 设计者为 String 提供了字符串常量池以提高其性能,那么字符串常量池的具体原理是什么? 字符串常量池的设计思想是什么? 字符串常量池在哪里? 如何操作字符串常量 ...

  9. python数据处理(六)之数据清洗:标准化和脚本化

    1.数据归一化和标准化 a. 归一化:对数据集进行计算,使数据都位于一个特定的范围\ b.标准化: c.删除离群值 2.数据存储 a.保存到SQLite数据库中 b.导出到简单的文件中csv 3.找到 ...

  10. java 面向对象(八):面向对象的特征一:封装性

    面向对象的特征一:封装与隐藏1.为什么要引入封装性?我们程序设计追求“高内聚,低耦合”.高内聚 :类的内部数据操作细节自己完成,不允许外部干涉:低耦合 :仅对外暴露少量的方法用于使用. 隐藏对象内部的 ...