c++中的枚举、自定义变量以及命名空间
枚举
格式:
enum class 名称 : 基本类型
{
变量1,
变量2,
…
}
例如:
enum class COLOR : short //枚举颜色
{
RED, //默认为0
BLUE,
GREEN
};
int main()
{
COLOR red = COLOR::RED;
COLOR blue = COLOR::BLUE;
COLOR green = COLOR::GREEN;
//std::cout << "red = " << red << std::endl; //编译过不去,类型比较严格
std::cout << "red = " << (short)red << std::endl; //强转才能打印出来
std::cout << "blue = " << (short)blue << std::endl;
std::cout << "green = " << (short)green << std::endl;
}
结果:
结论:
1、enum型内部变量,若自然顺序,依次增1
2、若要打印显示对应数值必须显式转换
重要事项:
1、内部变量默认类型int
2、成员只能是整数,浮点数不可以
自定义变量
大体上有以下三种方式:
1、#define Des_TypeName TypeName
2、typedef TypeName Des_TypeName;
3、using Des_TypeName=TypeName; //c++11以上可用包含11
注意: 第一种纯属是字符的替换,后两种不是
例子:
#define MyInt int //第一种
typedef int myint; //第二种
int main()
{
using mint = int;//第三种
MyInt AGE{ 10 };
myint myint{ 20 };
mint Age{ 30 };
std::cout << "define value=" << AGE << typeid(AGE).name() << std::endl;
std::cout << "typedef value=" << myint << typeid(myint).name() << std::endl;
std::cout << "using value=" << Age << typeid(Age).name() << std::endl;
}
结果:
命名空间使用
1、单项使用
using std::cout; //使用这个,就using这个
using std::cin;
int pig{ 0 };
cout << "我是猪!" << (char)10;
cin >> pig;
说明: 用哪个就using哪个
2、完整包含
using namespace std; //直接完整全部用了
int pig{ 0 };
cout << "我是猪!" << (char)10;
cin >> pig;
说明: 用哪个空间里的,直接using namespace 整个空间
3、嵌套使用
namespace zhansan //张三的命名空间
{
unsigned int age = 30;
char sex = 1;
namespace dog //狗的命名空间,嵌套
{
unsigned int age=5;
char sex = 0;
}
}
int main()
{
using namespace std;
using namespace zhansan;
cout << dog::age << endl; //可访问
dog::age = 10; //可修改
cout << dog::age << endl; //可打印
}
4、自定义命名空间
代码:
namespace zhansan
{
unsigned int age = 30;
char sex = 1;
}
int main()
{
using namespace std;
//1、完整包含
using namespace zhansan;
cout <<"zhansan的年龄=" << age << endl;
//2、仅包含需要的变量
using zhansan::age;
cout << "zhansan的年龄=" << age << endl;
}
使用注意事项:
1、不能放函数体内
2、可嵌套
3、子级空间调用上级空间需要加命名空间限定符