发布时间 : 星期四 文章C++教学大纲更新完毕开始阅读
第七章 结构与联合
【教学目的和要求】本章要求熟练掌握C++语言中结构和联合的定义、引用。 【教学重点】结构和联合的定义、引用。
【教学难点】结构和联合在数据结构中的应用。 【教学方法】讲授与上机相结合。 【思考题】
1. 结构定义语句的格式是什么?
2. 结构类型变量的说明有哪三种方法?
3. 联合与结构有何区别?它是如何定义的?
【讲授内容】 7.1 结构的定义
结构是一种构造类型,它是由若干“成员”组成的。 1. 结构的定义格式:
struct 结构类型名 { 成员类型1 成员名1; 成员类型2 成员名2; ??
成员类型n 成员名n; } ; 例:
struct stu {
int num;
char name[20]; char sex; float score;
2. 结构类型的长度等于各个数据成员的长度之和。 7.2 结构变量的定义和初始化
三种方法:
1) 先定义结构,再说明结构变量 struct stu {
int num;
char name[20];
13·
·
char sex; float score;
};
struct stu boy1,boy2;
2) 在定义结构类型的同时说明结构变量 struct stu {
int num;
char name[20]; char sex; float score; }boy1,boy2;
3) 定义无名结构类型的同时定义变量 struct {
int num;
char name[20]; char sex; float score; } boy1,boy2;]
7.3 结构成员的访问操作
1. 直接成员访问使用点操作符:结构变量名.成员名boy1.sex; 2. 间接成员访问使用箭头操作符:如stu *px=&boy2; cout<
3. 结构的赋值操作:同其他类型的变量一样可以赋值。
7.4 使用结构的程序举例
#include
struct AB{char a[10]; int b; }; void main() {
AB r[5]={{\ {\ int k=0;
for(int i=1; i<5; i++) if(r[i].b cout< ·14· 7.5 结构与函数 函数的参数也可以为结构类型。 7.6 结构与链表 结构中的指针域可以指向本身结构类型,这样由指针就构成了链表 struct IntNode { int data; IntNode* next; }; 链表中的结点通常通过动态分配产生 IntNode* p1=new IntNode; 7.7 结构与操作符重载 C++操作符不仅能够用于预定义数据类型,经操作符重载函数定义后,也可以用于用户自定义数据类型。 7.8 联合 联合的定义格式与结构相同,只是开始关键字不同:struct—> union union ABC {int a; double b; char* c;} x; 类型长度为所有成员类型长度的最大值; 联合对象的定义格式与访问方式均与结构相同 x.a x.b x.c; 任一时刻只有一个成员有效,这一点不同与结构,原因是分配的最大空间数不一样,每一个成员均是通过该空间来访问的。这是访问其他成员是无效的。 ·15· 第八章 类与对象 【教学目的和要求】本章是C++语言中面向对象的内容,要求熟练掌握C++语言中类的定义,数据成员和函数成员的定义和使用,以及构造函数、析构函数和友元函数的功能和使用。 【教学重点】数据成员和函数成员的访问。 【教学难点】构造函数、析构函数的定义和功能。 【教学方法】讲授为主。 【讲授内容】 8.1 类的定义 类类型的定义格式: class 类名 { 成员表 }; 其中,{ 成员表 }为类的定义体。成员分为数据成员和函数成员(又称为成员函数),每个成员又带有访问属性,分为3种访问属性(private,public,protected),省略时默认为:private。 类类型的长度等于所有数据成员长度之和(同结构)。 类对象的定义:同结构类型的定义一样,既可以利用类名定义对象定义类类型的同时定义对象。 类成员既可以直接访问,也可以间接的访问。 8.2 构造函数 构造函数是用户定义的类中的一种成员函数,没有返回类型,函数名与类名相同,类对象定义时将被自动调用,其功能是用构造函数来实现对类对象的初始化。 8.3 析构函数 析构函数的函数名也与类名相同,但前面加波折号,参数表为空。 8.4 友元函数和友元类 以friend作为声明的友元函数能够访问类中的私有成员;友元类也能够访问类中的私有成员。 ·16·