码迷,mamicode.com
首页 > 编程语言 > 详细

第32课 初探C++标准库

时间:2018-09-02 00:01:00      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:模块   产品   解决问题   int   换行   9.png   重载   实例   public   

有趣的重载:

技术分享图片

实验:

技术分享图片

将1左移到cout对象中。

将Test改名为Console,此时我们的本意是想让这个cout代表当前的命令行:

技术分享图片

cout代表命令行的一个实例,本意是想将1打印到命令行上。

我们在重载函数中用printf打印:

技术分享图片

运行结果如下:

技术分享图片

可以看到1被打印出来了。

我们还可以重载输出字符:

技术分享图片

运行结果如下:

技术分享图片

改进重载函数:

技术分享图片

这样第24行就实现了连续的传送。

将换行符定义成一个常量:

技术分享图片

 

最终完善的程序:

 1 #include <stdio.h>
 2 
 3 const char endl = \n;
 4 
 5 class Console
 6 {
 7 public:
 8     Console& operator << (int i)
 9     {
10         printf("%d", i);
11         
12         return *this;
13     }
14     Console& operator << (char c)
15     {
16         printf("%c", c);
17         
18         return *this;
19     }
20     Console& operator << (const char* s)
21     {
22         printf("%s", s);
23         
24         return *this;
25     }
26     Console& operator << (double d)
27     {
28         printf("%f", d);
29         
30         return *this;
31     }
32 };
33 
34 Console cout;
35 
36 int main()
37 {
38     cout << 1 << endl;
39     cout << "D.T.Software" << endl;
40     
41     double a = 0.1;
42     double b = 0.2;
43     
44     cout << a + b << endl;
45     
46     return 0;
47 }

运行结果如下:

技术分享图片

重载过后我们就可以使用console实例来输出了,而不用每一次都输入格式化字符串了。

C++标准库:

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

上述的输出流对象已经在C++标准库中实现了。

技术分享图片

C++标准库有一个子库,这个子库涵盖了C库的功能。

C++编译环境的组成:

技术分享图片

C语言兼容库和C++标准库中的C库子模块功能是重复的,但是它们所包含的头文件是不一样的。

标准库的常用数据结构:

技术分享图片

 

最右边一列就是C语言子库。为了兼容C语言编译器的库中所提供的功能。

C++标准库中的C库兼容:

我们在上面程序中使用的 #include <stdio.h>就是C兼容库,而不是C语言库,C兼容库是由编译器厂商提供的,不是标准库的一部分。

 例:

技术分享图片

这里包含的头文件既不是C++标准库,也不是C语言库,它是C++编译器厂商为了推广自己的产品而提供出来的C兼容库。

我们将C兼容库换成C++标准库中的C兼容模块:

技术分享图片

这时就得打开std命名空间了。

运行结果如下:

技术分享图片

 

C++标准库:

技术分享图片

前辈们将显示器和键盘实现成了C++中的对象。

C++中的输入输出:

 1 #include <iostream>
 2 #include <cmath>
 3 
 4 using namespace std;
 5 
 6 
 7 int main()
 8 {
 9     cout << "Hello world!" << endl;
10     
11     double a = 0;
12     double b = 0;
13     
14     cout << "Input a: ";
15     cin >> a;
16     
17     cout << "Input b: ";
18     cin >> b;
19     
20     double c = sqrt(a * a + b * b);
21     
22     cout << "c = " << c << endl;
23     
24     return 0;
25 }

运行结果如下:

技术分享图片

 

小结:

技术分享图片

 

第32课 初探C++标准库

标签:模块   产品   解决问题   int   换行   9.png   重载   实例   public   

原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9571643.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!