命名空间
cpp中有预编译指令:
#include <iostream>
其中iostream提供一个命名空间的东西,标准命名空间是std
C++中输入输出不能直接写出以下形式:
cin >> a;
cout << "a = " << endl;
别忘了要事先声明命名空间中的变量!
* 方式一:
std::cin >> a;
std::cout << "a = " << std::endl;
- 方式二:(在函数前面以全局变量的形式声明命名空间中的变量)
using std::cout;
using std::endl;
using std::cin;
- 方式三:(以上方式一和二太烦)
using namespace std;//一般在预编译指令后就可以写
命名空间的定义
在主函数前面自己定义一个命名空间也可以哟~
如:
(但要注意在主函数中使用自己命名空间中定义的变量时得声明好)
#define _CRT_SECURE_NO_WARINGS
#include "stdafx.h"
using namespace std;
namespace spaceA {
int g_a = 10;
}
int main()
{
cout << spaceA::g_a << endl;
return 0;
}
C++中新增bool关键字
bool flag = true;
flag = false;
const
const int a;和 int const a;的区别
void test5()
{
const int a = 10;//a是一个常量,a与C++符号表中的10对应起来
int *p = (int *)&a;//如果对一个常量取地址,编译器会临时开辟一个空间temp,让这个指针存放这个临时空间的地址
*p = 20;
cout << "a = " << a << endl;
cout << "*p = " << *p << endl;
}
int main()
{
test5();
//cout << spaceA::g_a << endl;
return 0;
}
C++的枚举
enum season
{
spr = 0,
sum,
aut,
win
};
enum season s = spr; //赋值的时候只能赋值给枚举
C++对C的拓展
引用
“int &”表示使用引用数据类型,如:
int a =10;
int &re = a; //re就是a的别名【引用一经声明不可改变】
int & re2; //err,因为引用一定要初始化
int &re3 = re; //可对引用再次引用,此时re3实际上也代指a
re = 50;
cout << "a = " << endl; //结果a = 50;
引用是可以作为左值使用的。
引用的应用——用来传参
- 注意:有了引用以后以下两种方法就可以等价了:
1.使用指针来传参:
void change_value(int *p)
{
*p = 30;
}
using namespace std;
int main()
{
int a = 100;
change_value(&a);
cout << "a = " << a << endl; //输出的 a = 30
return 0;
}
2.使用引用来传参
void change_value2(int & r)
{
r = 30;
}
using namespace std;
int main()
{
int a =30;
change_value2(a);
cout << "a = " << a << endl;
return 0;
}
当然交换数据函数实现起来指针和引用也可以达到一样的传参效果:
void exchange1(int *a,int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
//等价于下面这个函数
void exchange2(int &a,int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
- 引用的本质:
引用可能是一个常指针,其本质与“int *const p = &a;”一致
引用的应用——引用作为函数的返回值
int &getA()
{
int a = 10;
return a;
}
using namespace std;
int main()
{
int r_a = 0;
r_a = getA();
cout << "r_a = " << r_a <<endl; //ok
return 0;
}