第32课 - 初探 C++ 标准库

1、有趣的重载

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

                            1 << 2 ; 

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

                0000 0001  →  0000 0100     
 

            重载左移操作符,将变量或常量左移到—个对象中! 


2、编程实验

重载左移操作符     32-1.cpp

  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 << "Nyist" << endl;  
  40.       
  41.     double a = 0.1;  
  42.     double b = 0.2;  
  43.       
  44.     cout << a + b << endl;  
  45.       
  46.     return 0;  
  47. }  


                    第32课 - 初探 C++ 标准库


3、C++标准库

                重复发明轮子并不是—件有创造性的事, 

                站在巨入的肩膀上解决问题会更加有效!


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

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

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

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

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



                C++编译环境的组成     

            第32课 - 初探 C++ 标准库


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

                第32课 - 初探 C++ 标准库

                                右边为C++标准库为C提供的子库

                    即C++标准库已经包含一个子库用来兼容C语言代码


4、编程实验

C++标准库中的C库兼容     32-2.cpp 

  1. #include <cstdio>  
  2. #include <cstring>  
  3. #include <cstdlib>  
  4. #include <cmath>  
  5.   
  6. using namespace std;  //使用C++标准库
  7.   
  8.   
  9. int main()  
  10. {  
  11.     printf("Hello world!\n");  
  12.       
  13.     char* p = (char*)malloc(16);  
  14.       
  15.     strcpy(p, "Nyist");  
  16.       
  17.     double a = 3;  
  18.     double b = 4;  
  19.     double c = sqrt(a * a + b * b);  
  20.       
  21.     printf("c = %f\n", c);  
  22.       
  23.     free(p);  
  24.       
  25.     return 0;  
  26. }  


                    第32课 - 初探 C++ 标准库

        C++中诸如stdio.h  math.h…….为C++编译厂商为了推广

        自己产品而推出的C兼容库,不是标准C库

        编译C代码就要改头文件的话,麻烦。。。。。

        通过使用C兼容库,现有的C代码都可以被编译啦

        编译器厂商就成功吸引用户啦!!!


第32课 - 初探 C++ 标准库


5、编程实验

C++中的输入输出     32-3.cpp

  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++ 标准库


6、小结

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

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

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

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