C++无名联合与结构体的应用解析

需积分: 0 13 下载量 94 浏览量 更新于2024-08-18 收藏 3.82MB PPT 举报
"无名联合-东南大学C++何洁月" C++中的无名联合(union)是一种特殊的存储结构,它允许在相同内存位置上存储不同类型的数据。这使得无名联合能够有效地节省内存,因为所有成员共享同一块内存空间。在示例中,我们看到一个无名联合包含了两个成员:一个整型变量`i`和一个浮点型变量`f`。由于它们共享内存,当`i`被赋值后,如果接着给`f`赋值,那么`i`的值会被覆盖,反之亦然。 在9-1.c到9-5.c的代码片段中,可能涉及到的是C++的基础语法和概念,包括运算符的优先级和结合性(OperatorPrecedenceandAssociativity),以及各种控制流程结构,如分支结构(如if-else)和循环结构(如for, while)。这些是编程的基本元素,用于根据条件执行不同的代码段和重复执行特定任务。 《最新C》这本书中的P37上图和P38下图,可能讲解了联合(union)的使用和内存布局,以及如何通过无名联合进行数据访问。而在P39的图中,可能涉及到了更复杂的结构,比如结构体(struct)的使用,这在C++中是组织数据的一种方式,可以包含不同类型的数据成员,像例子中的`aircraft`结构体,它有`wingspan`和`passengers`两个整型成员,以及一个无名联合。 结构体`aircraft`中的无名联合用于表示不同类型的数据,这里可能是为了模拟不同类型的飞机特性,如战斗机、轰炸机和运输机。通过无名联合,可以为飞机的某一特性(例如,战斗机可能是武器系统,轰炸机可能是炸弹装载量,运输机可能是货物容量)提供灵活的数据存储。在给结构体成员赋值并输出时,需要确保正确地访问和修改相应的成员,因为无名联合的特性会导致对一个成员的修改可能会覆盖其他成员的值。 交换函数`Swap`的例子展示了值传递和引用传递的区别。值传递会创建原始变量的副本,对副本的修改不会影响原始变量;而引用传递允许直接修改原始变量,因此在交换两个变量的值时,使用引用可以达到预期的效果。 程序设计方法的讨论提到了面向过程编程(主模块+子模块)和面向对象编程的概念。面向过程强调通过函数来实现功能,而面向对象则更注重数据和操作数据的方法(成员函数)的封装,以类的形式表示。面向对象编程还引入了继承和派生的概念,允许创建新的类基于已有的类,以复用和扩展代码。虽然这里没有深入介绍,但这些是C++中非常重要的特性。 类的成员函数有两种实现方式:在类声明中直接定义(内联函数,使用`inline`关键字)或在类外定义。内联函数可以避免函数调用的开销,但过度使用可能导致代码膨胀。析构函数在对象生命周期结束时自动调用,通常用于清理或释放对象资源。 这段摘要涵盖了C++的多个核心概念,包括联合、结构体、基本控制结构、函数、类、以及面向对象编程的基本思想。这些都是理解和编写C++程序的基础。