前言
期末考试终于考完了,把之前学到的C++知识点总结一下,为接下来一个暑假的学习做好准备。
一、命名空间
作用:防止变量和函数重命名,引起访问不明确。
示例:
namespace Pointer1{
void print(){
printf("你好 ");
}
}
访问命名空间:
命名空间::函数名
Pointer1::print();
如果需要大量的访问命名空间里的函数或变量,此时感觉一个一个敲Pointer1::太麻烦,可以使用using namespace Pointer1; 但是这种方式需要谨慎使用。
这时又会有一个新的问题,就是如果我想访问其他命名空间里的内容可以用命名空间::函数名,但是如果想访问全局内容该怎么办?比如你想访问原来的print()函数。用如下方式:
::函数名
::print();
二、输入输出
C++提供了cin和cout用来输入输出。
代码如下:
int main()
{
int a = 0;
double b = 0.0;
cin >> a >> b;
cout << a << "\n" << b << endl;
return 0;
}
在这里不得不提一下endl。用endl会换行并清空缓存区。
新增数据类型
bool
C++比C语言新增了bool类型,不得不说方便了不少。
示例:
int main()
{
bool b = true;
cout << b << endl;
}
引用类型
引用类型可以让多个变量同时指向同一片内存。其实我学到这里的时候感觉引用类型有一种替代C语言指针的感觉。
引用类型可以理解成const+类型+*,即不能改变的指针,例如:
int& = const int *.
int main()
{
int a = 100;
int& b = a;
cout << &b << " " << &a << endl;
b = 10;
cout << a << endl;
return 0;
}
上述代码在输出时第一行是两个相同的地址,第二行a的值会变成10。
特点:
- 引用被创建时必须被初始化(指针则可以在任何时候初始化);
- 不能有NULL引用,引用必须与合法化的储存单元关联(指针则可以是NULL);
- 一旦引用被初始化,就不能改变应用的关系(指针可以改变所指的对象)
函数重载
- 相同声明域下函数名相同但参数列表不同(类型和个数不完全相同)
- 只有返回值类型不同不算函数重载
函数重载会根据调用函数时传进来的参数列表调用不同的函数。
代码示例:
#include <iostream>
using namespace std;
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
void swap(int& a, int& b) {
int t = a;
a = b;
b = t;
}
void swap(double& a, double& b) {
double t = a;
a = b;
b = t;
}
int main()
{
int a = 100;
int b = 200;
swap(&a, &b);
cout << a << " " << b << endl;
swap(a, b);
cout << a << " " << b << endl;
double c = 100.1;
double d = 50.2l;
swap(c, d);
cout << c << " " << d << endl;
return 0;
}
运行结果如下:
其他的一些零散知识点
- C++头文件没有“.h”;
- 实现一个函数交换两个变量的值
#include <iostream>
using namespace std;
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
void swap(int& a, int& b) {
int t = a;
a = b;
b = t;
}
int main()
{
int a = 100;
int b = 200;
swap(&a, &b);
cout << a << " " << b << endl;
swap(a, b);
cout << a << " " << b << endl;
return 0;
}
总结
这是C++笔记的第一期,之后还会有,直到把学到的C++知识点总结完。