C++教学大纲

发布时间 : 星期四 文章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<sex<<' '<score;(stu为结构类型)。

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·

联系合同范文客服:xxxxx#qq.com(#替换为@)