- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++中引用的使用及教学方法分析
摘要:C++中的引用具有重要的作用,可以大大提高程序的运行效率。目前关于引用的使用及教学方法很少有教材专门论述。文章分别针对引用的不同使用场合对其使用方法及教学方法进行探讨。教学效果表明,新方法对学生学习引用及深入理解C++是有益的。
关键词:C++;引用;教学方法
C++中的引用可以大大提高程序的运行效率,而且在某些场合下必须使用。但是对于如何正确而有效地使用引用,很少有教材专门阐述。在C++教学中如果层次清晰地将引用的用法教授于学生,将使他们受益匪浅。
引用使用的场合大致分为两类,一类是在函数的形参列表中使用引用,其作用为使子函数对形参所做的更改对主函数中的实参有效,这种函数调用称为引用调用[1];另一类是将引用作为函数(包括类的成员函数)的返回值,这是引用使用及教学的难点所在。本文先讨论一下引用的定义,然后将从上述两方面展开引用的使用方法及教学方法的探讨。
1引用的定义
引用可以看成是一种特殊类型的变量,可以被认为是另一个变量的别名[1]。通过引用名与通过被引用的变量名访问变量的效果是一样的,例如:
int a,b;
int r=a; /* 建立一个int型的引用r, 并将其初始化为变量a的一个别名 */
b=4;
r=b; /* 相当于a=b */
使用引用时必须注意下列问题:1)声明一个引用时,必须同时对它进行初始化,使它指向一个已存在的对象;2)一个引用被初始化后,就不能改为指向其他对象。也就是说,一个引用从它诞生之时起,就必须确定是哪个变量的别名,而且始终只能作为这个变量的别名。
从以上所述可以看出,除了在书写形式上有所差别外,在使用方法上引用其实相当于一个指针常量,其指向地址在声明时即被指定,且程序运行过程中不再改变。进一步讲,可以认为引用就是通过内存地址对相应存储单元内的变量的值进行操作,讲清楚这一点,学生对于引用的理解就会相当清楚了。
2引用的使用教学
2.1引用调用
引用调用中,形参的初始化是在执行主调函数中的调用表达式时用实参来进行的。这样,引用类型的形参就通过形实结合,成为实参的一个别名,对形参的任何操作也就会直接作用于实参。不难想到,只有形参与实参具有同一个内存地址的时候,才会产生这种效果。所以,在这里,引用必须理解为一个指针,才能顺理成章地在子函数内部完成对实参的操作。使用引用调用通常是处于下面两种考虑:1)提高程序的执行效率。形实结合只需传递一个地址,当实参是带有大量数据的对象时,引用调用显得尤为重要;2)对于形参的操作直接作用于实参。
可以通过例1对上述使用方法进行讲述。
例1:
//cow.h
class Cow
{
public:
Cow(int direction): m_direction
(direction){};
void TurnLeft() { m_direction--; };
void TurnRight() { m_direction++; };
void TurnBack() { m_direction += 2; };
int GetDirection() const { return m_direction; };
private:
int m_direction;
};
//main.cpp
#include
void TurnLeft(Cow C)
{
C.TurnLeft();
}
void main()
{
Cow mike(2);
cout mike.GetDirection() endl;
TurnLeft(mike);
cout mike.GetDirection() endl;
}
程序运行结果为:
2
1
在执行语句“TurnLeft(mike)”时,程序将mike的地址直接传递给形参C(而不需传递mike的众多数据成员),形参C就相当于mike的一个别名,对C的任何操作都相当于直接对mike操作,所以TurnLeft函数中的动作直接对mike的朝向产生了作用,mike的Direction从2变为了1。
在教学方法中,要结合案例采用比较法将引用调用与普通函数调用相区别。案例法是讲述C++等实践性课程行之有效的方法。比较法可以将形相似质不同的知识点讲述清楚。如在上例中,将黑体部分的“”去掉,此时函数调用变为普通函数调用,运行结果将发生改
您可能关注的文档
- 《ASP网页制作》教学方法探索与实践.doc
- 《C#程序设计》教学改革探索.doc
- 《C++程序设计教程》(第二版)的写作动机与特色.doc
- 《Access程序设计》教学方法探索.doc
- 《C程序设计》教学方法探讨.doc
- 《C程序设计》――一本难得的好教材.doc
- 《C语言》教学中学生学习兴趣的培养.doc
- 《C语言程序设计》的教学体会.doc
- 《C语言程序设计》教学实践.doc
- 《C语言程序设计》高职教学初探.doc
- 2025年网络文学平台版权运营模式创新与版权保护体系构建.docx
- 数字藏品市场运营策略洞察:2025年市场风险与应对策略分析.docx
- 全球新能源汽车产业政策法规与市场前景白皮书.docx
- 工业互联网平台安全标准制定:安全防护与合规性监管策略.docx
- 剧本杀剧本创作审核标准2025年优化与行业自律.docx
- 2025年新能源电动巡逻车在城市安防中的应用对城市环境的影响分析.docx
- 全渠道零售案例精选:2025年行业创新实践报告.docx
- 2025年网约车司乘纠纷处理机制优化与行业可持续发展报告.docx
- 2025年宠物烘焙食品市场法规政策解读:合规经营与风险规避.docx
- 2025年宠物行业数据安全监管政策影响分析报告.docx
文档评论(0)