初识C++标椎库
1、有趣的重载
2、编程实验
//32-1.cpp
#include <stdio.h>
#include <string.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;
int main()
{
//cout.operator<<(1);
cout << 1 << endl;
cout << "hello world" << endl;
double a = 0.1;
double b = 0.2;
cout << a + b << endl;
return 0;
}
//编译运行
$ ./a.out
1
hello world
0.300000
3、C++标准库
重复发明轮子并不是一件有创造性的事,站在巨人的肩膀上解决问题会更加有效!
- C++标准库并不是C++语言的一分部
- C++标准库是由类库和函数库组成的集合
- C++标准库中定义的类和对象都位于std命名空间中
- C++标准库的头文件都不带.h后缀
- C++标准库涵盖了C库的功能
- C++标准库预定义了多数常用的数据结构
字库:兼容C语言库 | ||
---|---|---|
bitset | set | cstdio |
deque | stack | cstring |
list | vector | cstdlib |
queque | map | cmath |
以上都是C++标准库的字库。
//C++标准库中的C库兼容
//32-2.cpp
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
printf("hello world\n");
char* p = (char*)malloc(16);
strcpy(p,"hello new world");
printf("%s\n",p);
double a = 3;
double b = 4;
double c = sqrt(a*a + b*b);
printf("c = %f\n",c);
free(p);
return 0;
}
//编译运行
$ ./a.out
hello world
hello new world
c = 5.000000
//C++中的输入输出
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
cout << "hello world" << endl;
double a = 0;
double b = 0;
cout << "Input a:";
cin >> a;
cout << "Input b:";
cin >> b;
double c = sqrt(a*a + b*b);
cout << "c = " << c << endl;
return 0;
}
//运行编译
$ ./a.out
hello world
Input a:3
Input b:4
c = 5
4、小结
- C++标准库是由类库和函数库组成的集合
- C++标准库包含经典算法和数据结构的实现
- C++标准库涵盖了C库的功能
- C++标准库位于std命名空间中