版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
1.有趣的重载
- 操作符<<的原生意义是按位左移,例: 1 << 2 ;
- 其意义是将整数1按位左移2位,即: 0000 0001 → 0000 0100
2.编程实验
- 重载左移操作符
-
#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;
-
-
int main()
-
{
-
cout <<
1 <<
endl;
//使用endl替换'\n'
-
cout <<
"Hello World" <<
endl;
-
double a =
0.1;
-
double b =
0.2;
-
cout << a + b <<
endl;
-
-
getchar();
-
-
return
0;
-
}
- 运行结果:
3.C++标准库
- 很多时候程序设计不应该重复造轮子,而应该有效利用已有的实现
3.1 注意
- C++标准库并不是C++语言的一部分
- C++标准库是由类库和函数库组成的集合
- C++标准库中定义的类和对象都位于
std
命名空间中 - C++标准库的头文件都不带
.h
后缀 - C++标准库涵盖了C库的功能
3.2 C++编译环境的组成
- C++标准库预定义了多数常用的数据结构
- 右边c开头为C++标准库为C提供的子库,即C++标准库已经包含一个子库用来兼容C语言代码
3.3 编程实验
- C++标准库中的C库兼容
-
#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 World");
-
double a =
3;
-
double b =
4;
-
double c =
sqrt(a*a + b * b);
-
printf(
"c = %f\n", c);
-
-
free(p);
-
-
getchar();
-
-
return
0;
-
-
}
- C++中诸如stdio.h math.h…….为C++编译厂商为了推广自己产品而推出的C兼容库,不是标准C库
- 编译C代码就要改头文件的话,麻烦。。。。。
- 通过使用C兼容库,现有的C代码都可以被编译啦,编译器厂商就成功吸引用户啦!!!
3.4 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;
-
-
system(
"pause");
-
-
return
0;
-
}
- 运行结果:
4.总结
- C++标准库是由类库和函数库组成的集合
- C++标准库包含经典算法和数据结构的实现
- C++标准库涵盖了C库的功能
- C++标准库位于
std
命名空间中