自定义类型

为已有类型另外命名:类型别名

typedef 已有类型名 新类型名表

typedef int Data;
typedef double Area,Volume;
Data n;
Area a;
Volume b;

using 新类型名=已有类型名

using Area=double;
using Data=int;

枚举类型

1.不限定作用域的枚举类型
enum 枚举类型名{变量值列表};
enum weekday
	{sun,mon,tue,wed,thu,fri,sat};
列表默认从0开始,sun=0,mon=1,tue=2,...,sat=6

说明:1.枚举元素是常量,不能对其赋值,不能写赋值表达式sun=7
          2.枚举元素有默认值,默认从0开始,0 1 2...
          3.可以在声明时另行指定枚举元素的值,例如:
      enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat};//若不指定mon=1,则mon会从8开始

          4.枚举值可以进行关系运算
          5.整数值不可以直接赋给枚举变量,必须进行强制类型转换
          6.枚举值可以给整型变量赋值,因为枚举是整型的子集

应用:

#include<iostream>
using namespace std;
enum GameResult{WIN,LOSE,TIE,CANCEL};
int main()
{
	GameResult result;
	enum GameResult omit = CANCEL;//在这里前面有没有enum都没有关系
	for (int count = WIN; count <= CANCEL; count++)
	{
		result = GameResult(count);//强制类型转换
		if (result == omit)
			cout << "The game was cancelled." << endl;
		else
		{
			cout << "The game was played";
			if (result == WIN)cout << " and we won!";
			if (result == LOSE)cout << " and we lost.";
			cout << endl;
		}
	}
	system("pause");
	return 0;
}

2.限定作用域的枚举类型

auto类型和decltype类型

auto类型:编译器通过初始值自动推断变量的类型
例如auto val=val1+val2;
val的类型取决于val1+val2的类型

decltype类型:定义一个变量与某一表达式类型相同但不用改表达式初始变量,例如:
decltype (i)j=2;//j以2为初始值但类型与i一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值