- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
南京航空航天大学
课 程 设 计
课程名称 题目名称
学生学院
2014 年1月日
摘要
本实验报告主要关键字:
目 录
1实验设计目的及要求 3
1.1课题要求 3
1.2设计目的 3
2 3
2.1抽象类不能使用的情形 4
2.2抽象类能够使用的情形 4
3 虚拟函数 7
4 双向调用技术 13
4.1正向调用 13
4.2反向调用 14
4.2.1框架中的类调用同体系的子类 14
4.2.2跨体系的反向调用 17
4.3预设函数 19
5构造函数与反向调用技术 23
6总结 25
7参考文献 26
1实验设计目的及要求
1.1课题要求
课本P69(ex04-01.h);
P70~72((4);(5);(6);(7) 中的程序);
P73的VIP类、main函数;P74~75; P84~85(两个程序);
P86(上半部分的程序);
P90下半部分的程序,P91上半部分。
1.2设计目的
定义的类及类间关系虚拟函数、抽象类、反向调用技术的应用情况抽象类派生指针的应用情况构造函数与反向调用
2 抽象类
抽象类为包含纯虚函数的类,抽象类往往是为了实现面向对象中多态的概念,它有许多限制不能使用的情形与可以使用的情形。本章节一下主要讨论抽象类的应用情况和限制情况。本章节使用的程序背景参见Person.h文件(如下代码1所示),类间关系如图1所示。
class Person
{
protected:
char name[20];
public:
void SetName(char *na)
{
strcpy(name,na);
}
virtual void Display()=0;
};
class Customer:public Person
{
public :
virtual void Display()
{
coutCustomer:nameendl;
}
};
代码1
2.1抽象类不能使用的情形:
根据不同程序背景对各种情形进行测试:
1)不能做自变量的类型(参数类型),使用实例如void Disp(Person x);之后使用的时候又是Person x;Disp(x);
2)不能创建对象,使用实例如Person x;
3)不能成为函数的返回类型,使用实例如Person Disp();
4)不能用来转换对象,使用实力如Customer cust;((Person)cust).SetName(cyf);
2.2抽象类能够使用的情形
1)测试抽象类指针可以用来指向之类对象
在代码1上添加如下代码进行实现,具体代码参见P69_4程序
Customer cust;
cust.SetName(cyf);
Person *p=cust;
p-Display();
由于Display为虚函数,所以p虽然是抽象类指针,仍然能调用子类Customer的Display()函数,从上述程序结果可以得之抽象类指针可以指向子类的对象,但具体是否调用子类覆盖过的函数代码还需要根据具体的情形讨论。讨论参见第7点抽象类指针的应用情况分析。
2)测试抽象类指针可以当成函数的自变量
在代码1上添加如下代码进行实现,具体代码参见P69_5程序
void Set(Person *p)
{
p-SetName(Amy);
}
int main()
{
Customer cust;
cust.SetName(Linda);
Set(cust);
cust.Display();
return 0;
}
Set(cust);
cust.Display();
Set函数传递的是子类Customer的指针,Set函数中对指针指向的数据成员进行了新的赋值,且这种改变时持久性的,故主函数仍然调用Display(),其数据成员的值已经改变了。从上述程序结果可以得之指针可以当做函数的自变量
3)函数可以回传抽象类的指针
在代码1上添加如下代码进行实现,具体代码参见P69_6程序
Person *sub()
{
Customer *pc=new Customer();
pc-SetName(Tom);
return (Person*)pc;
}
int main()
{
Person *p=sub();
p-
您可能关注的文档
- [财务管理与分析]考试卷A.doc
- ZG2协议-板式换热器技术协议(签字版).doc
- XXX二手车交易市场提供公车改革展示场地的申请.doc
- YUY-523机械装调与控制技术实训装置.docx
- §5-2人生价值与劳动奉献.doc
- “MBTI性格类型测试问卷”及“职业性格解码”.doc
- “三师共管”分级诊疗模式的路径示意图.docx
- “叙事体新材料任务驱动型作文”~.doc
- “富硒木耳”论文.doc
- “十三五”规划总体思路的解读100分试卷.doc
- DBJ50-058-2006:钢筋混凝土短肢剪力墙异形柱结构技术规程.pdf
- DBJ_T50-061-2007:预拌砂浆生产与应用技术规程.pdf
- DBJ50-063-2007:建筑外墙饰面涂饰翻新技术规程.pdf
- DB13_T5067-2019:金属非金属选矿厂原矿堆场作业安全规范.pdf
- 傅雷家书读后感心得1.docx
- DB13(J)_T8343-2020:凹凸槽增强型保温复合板应用技术规程.pdf
- DB13(J)_T8342-2020:模泡保温板应用技术规程.pdf
- DB13(J)_T8362-2020:点连式限位钢丝网片内置保温板应用技术标准.pdf
- DBJ50_T-039-2020:绿色生态住宅(绿色建筑)小区建设技术标准.pdf
- DB13(J)_T8339-2020:装配整体式叠合剪力墙结构技术标准.pdf
文档评论(0)