C++面向对象:枚举类型与C到C++的扩展

需积分: 9 1 下载量 11 浏览量 更新于2024-07-14 收藏 3.16MB PPT 举报
"这篇资料是关于C++面向对象编程中的枚举类型,主要讲述了枚举在C++中的定义、使用及特点。同时,提到了C++相对于C语言的扩展和改进,包括名字空间、C++的输入/输出系统等概念。" 在C++中,枚举类型(enumerated type)是一种定义一组命名常量的数据类型,它允许我们以更清晰、更具可读性的形式表示一组有限的值。在C语言中,枚举的定义通常以`enum`关键字开始,后面跟着枚举类型名和枚举常量列表,例如: ```cpp enum martial_status {Single, Married, Divorced}; ``` 而在C++中,我们可以省略`enum`关键字,直接定义枚举类型: ```cpp enum martial_status {Single = 0, Married, Divorced}; ``` 枚举常量的值默认从0开始递增,但如果用户为某个枚举常量指定了特定的整数值,那么后续的枚举常量会以此为基础自动增加。例如,我们可以设定`Single`的值为0,`Married`的值为1,`Divorced`的值为2。如果省略初始值,如`Married`,则它的值将是前一个枚举常量的值加1。 ```cpp enum color {red, yellow, blue}; ``` 在这个例子中,`red`的值为0,`yellow`的值为1,`blue`的值为2。 枚举类型的常量可以像整数一样参与计算,但它们的输出会显示它们对应的整数值,而不是枚举名。这是因为枚举常量本质上是整数值,只是披上了符号常量的外衣。 C++不仅包含传统的C语言特性,还引入了面向对象编程的元素,如类、继承、多态等。在从C到C++的过渡中,C++增加了名字空间(Namespace)的概念,用来解决不同库或模块间标识符重名的问题。例如: ```cpp namespace my_namespace { int x = 5; } my_namespace::x; // 访问my_namespace中的x ``` 此外,C++的输入/输出系统相较于C语言有了很大的改变,C++使用`iostream`库,通过`std::cout`和`std::cin`进行输出和输入,而不再是C语言的`printf`和`scanf`。例如: ```cpp #include <iostream> int main() { std::cout << "Hello, World!"; return 0; } ``` C++在保留C语言的效率和灵活性的同时,提供了更高级的特性,如枚举类型、名字空间以及改进的输入/输出系统,使得代码更加安全、可维护且易于理解和使用。