C++快速入门 第十三讲:联合、枚举和类型别名

发布时间 2023-08-18 14:38:38作者: 一杯清酒邀明月

联合(union)与结构有很多相似之处,联合也可以容纳多种不同类型的值,但是它每次只能储存这些值中的一个(即当我们已经给联合里的一个成员赋值后,再给另一个成员赋值时,将丢弃第一个成员的值)。

实例1:联合的应用

 1 #include <iostream>
 2 
 3 union mima
 4 {
 5     unsigned long birthday;
 6     unsigned short ssn;
 7     const char *pet;//将pet声明为一个指向不变字符串的指针     
 8 };
 9 
10 int main()
11 {
12     mima mima_1;
13     
14     mima_1.birthday = 19970328;
15     std::cout << mima_1.birthday << "\n";
16     
17     mima_1.pet = "Chaozai";//为字符串指针内的数据赋值 
18     std::cout << mima_1.pet << "\n";
19     std::cout << mima_1.birthday << "\n";//由于覆盖,将输出pet中字符串存储的地址 
20     
21     return 0;
22 }

枚举(enum)类型用来创建一个可取值列表。枚举值不是字符串,编译器会按照各个枚举值在定义时出现的先后顺序把它们与0~n-1的整数(n是枚举值的总个数)分别关联起来。

实例2:枚举的应用

 1 #include <iostream>
 2 
 3 int main()
 4 {
 5     enum weekdays{Monday, Tuesday, Wednesday, Thursday, Friday};//编译后依次变为0、1、2、3、4 
 6     
 7     weekdays today;
 8     
 9     today = Monday;
10     std::cout << today << "\n";
11     
12     today = Friday;
13     std::cout << today << "\n";
14     
15     switch (today)
16     {
17         case Monday:
18             std::cout << "hello";
19             break;
20         case Tuesday:
21             std::cout << "yiwofeiye";
22             break;
23         default:
24             std::cout << "Goodbye";
25             break;
26      }
27      return 0; 
28  } 

类型别名(typedef)可以为一个类型定义创建一个别名。例如:

定义typedef int* intPointer;后便可以使用intPointer myPointer;来定义整型指针。