- 6
- 0
- 约2.88万字
- 约 22页
- 2016-11-30 发布于天津
- 举报
第六章C的类派生与虚拟函数
第六章 C++的类派生与虚拟函数
第四章中已讨论的类与数据封装概念可以说是C++的第一大特征。而本章将要论述的类派生与多态概念则是C++的另外两大特征。由于有了前两章的基础,所以将这两个特征合并一章讨论也就不太困难了。
§1 C++语言所处理的类的相互关系
§1.1 包容关系的实现
一个类包含有一个以上的类作为其独立的属性成员的关系称为包容关系。被包容的类作为包容类的一个成员当然具备其成员地位应有的各种特性,但由于被包容类自身也含有成员,所以二者间又必然存在有其相互间的关联关系。
例1:
#includeiostream.h
#includestring.h
class Course
{
char name[10];
int score;
public:
Course(){}
void init(char* na, int sc)
{
score=sc;
name[9]=\0;
strncpy(name,na,9);
}
int getscore(){return score;}
char *getname(){return name;}
};
class Student
{
char name[10];
int number,total;
Course *p;
public:
Student(char* na, int nu):number(nu)
{
int i,ccs;
char cna[10];
name[9]=\0;
strncpy(name,na,9);
coutHow many course are the student selected:;
cintotal;
p=new Course[total];
coutPlease input each course name and its score:endl;
for(i=0;itotal;i++)
{
coutThe course name:;
cincna;
coutthe score:;
cinccs;
p[i].init(cna,ccs);
}
}
void operator!()
{
int i;
coutThe students name is nameendlCourse name Scoreendl;
for(i=0;itotal;i++)
{
cout p[i].getname() p[i].getscore()endl;
}
}
};
void main()
{
Student s1(Wang,123);
!s1;
}
本例中的Student类的private区包容了一个Course类的指针。考虑到一个学生与课程的关系为1:n,所以在初始一个学生对象时临时确定该学生所选的课程数目。考察Course类会发现其内的缺省构造函数非常简单,这便是被包容类的特征。当一个类要包容另一个类的不确定数目的对象且其成员初始工作不能在一次构造函数的引用中完成时,被包容类通常都是以数组或链表等结构出现在包容类中的。此时被包容类的构造函数很难能发挥太大的作用,因此其成员初始化工作只能将内存征用和初始赋值两个步骤分开进行。前者由缺省构造函数实现,而后者自然要由其它的成员函数在以后的引用中完成了。C++语言的包容关系具有下述特征:
具有包容关系的两个类存在各自的独立性,即自身对象的存在不依赖于对方是否存在(与理论概念有区别);
被包容类对象只能以一个成员的身份被定义在包容类中,因而要受到成员所在区属性的影响;
被包容类自身的成员不会由于存在包容关系而成为包容类成员;
§1.2类模板
在客观模型中的类内的成员数据和成员函数的参数或返回值类型也有不能确定类型的情形。此时可应用类模板来取代这些未知的成分,待到运行时再动态地装入具体的类型。类模板的声明的语法格式如下:
templateclass 替代类型标识符
与函数模板相同的格式要求,类模板的声明的语句也必须置于类声明的前面。如有两个以上的模板参数时,应使用逗号分隔。使用含类模板的类定义对象时也必须在类名的后面带上“实际类型”的参数形式。类模板最常用于各种类包容关系的设计模型之中。
例2:
#includeiostream.h
templateclass T
class A
您可能关注的文档
- 第三章化学动力基础.doc
- 第三章北美洲(二).ppt
- 第三章文档类型定义DTD.ppt
- 第三章需求擷取與分析-good.ppt
- 第三节变量数列的编制.doc
- 第三課需求和供給的改變.doc
- 第三階段能力指標.ppt
- 第九章公差配合與量測.doc
- 第二十六章引註、註腳級參考書目的寫法.ppt
- 第二届中国教育国际化论坛.doc
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 2024浙江嘉兴市众业供电服务有限公司招聘笔试备考试题及答案解析.docx VIP
- Razer雷蛇灵刃15标准版-GTX1660 Ti(RZ09-03009)中文手册.pdf
- ISO90012015标准.ppt VIP
- 2025届湖南新高考教学教研联盟高三第二次联考数学试卷及参考答案.pdf VIP
- 辐射防护手册 第1分册 辐射源与屏蔽_李德平,潘自强主编_北京:原子能出版社_1987.08_10263208_P480.pdf
- 机器人行走机构及控制系统设计和实现计算机专业.pdf VIP
- 建筑装饰装修-分部工程质量验收记录表.doc VIP
- 2024年黑龙江省大庆市中考数学试题(原卷版).pdf
- 2025嘉兴市众业供电服务有限公司招聘74人笔试备考试题及答案解析.docx VIP
- (高清版)DB34∕T 4706-2024 手术智慧医疗系统建设规范.docx VIP
原创力文档

文档评论(0)