新建C++的工程

1

新建项目,控制台应用程序

勾选空项目, 勾去安全周期检查

2

源文件 --> 新建项

3

添加main.cpp

4

选择性编译

1
2
3
4
5
6
7
8
9
#if 0
#include <stdio.h>

int main() {
printf("Hello World");

return 0;
}
#endif

命名空间 (namespace)

在同样的作用域下不能定义多个同名变量或者函数

所以可以使用命名空间来解决这个问题

命名空间可以嵌套

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;

namespace yf {
int a = 12;
}

namespace fy {
int a = 1;
namespace ffy{
int a = 11;
}
}

int main() {
cout << fy::a << endl;
cout << yf::a << endl;
cout << fy::ffy::a << endl;
using fy::ffy::a;
cout << a << endl;
getchar();
return 0;

运行结果:

1563440056471

使用namespace的三种方式

1
2
3
using namespace std;
fy::ffy::a
using fy::ffy::a;

匿名联合

联合: 几个变量公用一块内存

1
2
3
4
5
6
union {
char ch;
int tt;
};
tt = 65;
cout << ch << endl;

运行结果:

1563440146027

枚举

可以一次性生成一系列的递增的值,如果没有复制的话,后面一个总是比前面一个多1

  • 枚举变量不能赋值
  • 不同类型的枚举变量不能复制

用处

可以在for循环里面枚举

可以表示多个同一个类型的数据

1
2
3
4
5
6
7
enum Color { Red, Yellow, Blue, White, Black };

Color ball1;
ball1 = Yellow;
for (int i = Red; i <= Black; i++) {
if (i == ball1) cout << i << endl;
}

内联

函数前面加 inline.

可以加快简单函数的执行速度

1
2
3
inline int Max(int a, int b) {
return a > b ? a : b;
}

重载

同一作用域,函数名相同,参数表不同的函数构成重载

1
2
3
void func(int a, int b);
void func(int a);
void func();

默认参数,哑元

定义默认参数,必须从右边开始设置

1
void func(int a, int b, int c = 3, int d = 4);

哑元用于兼容老版本的函数

1
void func(int, int b, int);

调用的时候都是可以些3个参数

引用

引用是变量的别名

加在函数前面就可以写左值了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

#include <iostream>
using namespace std;

int& func(int a,int& b) {
a++;
b++;
return b;
}

int main() {
int fy = 2, yf = 22;
func(yf,fy) = 4;
cout << fy << endl << yf; // 4 22
getchar();
return 0;
}

动态分配内存

记得写删除内存的语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//use malloc and free
int* p = (int*)malloc(sizeof(int));
*p = 4;
cout << *p << endl;
free(p);
p = NULL;

//use new and delete
int* p2 = new int;
int* p3 = new int(300);
*p2 = 123;
cout << *p2 << endl;
cout << *p3 << endl;
delete p2;
delete p3;
p3 = NULL;
p2 = NULL;

//use new in array
int* p4 = new int[4]{1, 3, 5, 7};
for (int i = 0; i < 4; i++) {
//p4[i] = i;
cout << p4[i] << " ";
}
delete[] p4;
p4 = NULL;