APP下载

《C++面向对象程序设计》中引用类型的教学实践

2017-03-14韩祥波张艳华黄晶晶张立红

科技视界 2016年27期
关键词:多态教学实践

韩祥波 张艳华 黄晶晶 张立红

【摘 要】分析了引用的本质,探讨了引用在函数参数、复制构造函数、运算符重载、多态等方面的案例,通过在实验班和卓越班的多次教学使用,更好的调动了学生的积极性。

【关键词】引用;运算符重载;多态;教学实践

Teaching Practice of Reference in Course of “C++ Object Oriented Programming”

HAN Xiang-Bo ZHANG Yan-hua HUANG Jing-jing ZHANG Li-hong

(College of Computer Science and Technology,Shandong University of Technology,Zibo Shandong 255049,China)

【Abstract】The essence of reference was analyzed.It was discussed in the function parameter,the copy constructor,operator overloading, polymorphism and other aspects.The enthusiasm of students was mobilized through several teaching in the experimental class and excellent class.

【Key words】Reference;Operator overloading;Polymorphism;Teaching practice

0 引言

《面向对象程序设计》是计算机及相关专业的一门重要专业基础课,其中诸多难点更需要学生体会掌握。而引用便是涉及抽象、封装、继承、多态这条主线的一个难点。学生前期学的指针作为C语言的精华在很多方面得到了高效使用,但是仍有其缺陷:要明确使用指针本身还是所指变量、无初始化时出现悬空指针、不合理赋值后出现系统关键地址存放内容被改写、项目后期维护代价高等。于是在C++、Java、c#这些主流的开发平台中使用受到诸多限制,而它的代替者—引用出现了。

1 引用概念

在C++中,变量的引用就是变量的别名,故引用又称别名(alias)。可通过下述代码来理解其本质。

#include

void main(){int x=100; int & m=x;

cout<<"x="<

CCopyS(const CCopyS & x) {number=x.number;cout<<"CCopy:"<

void main() { CCopyS s1,s2;s1.number=12;s2=s1;CCopyS s3=s1;}

在s2=s1中,對已存在的对象赋值故不需使用复制构造函数,而在CCopyS s3=s1中按s1标准构造出新对象s3要调用复制构造函数,出于对s1对象保护目的,对其加const限制。

4 引用在运算符重载中的使用

#include

class COpOl {public:int m1; COpOl(int x= 0){m1=x;}

friend ostream & operator << (ostream &, const COpOl &);};

ostream& operator << (ostream & output,COpOl & c){output<<" m1="<

void main( ){ COpOl c1,c2(3),c3(5); cout<

两个参数均为引用类型,前者的使用使得复杂类型得以连续输出。从cout<

5 引用在多态中的使用

#include

class CPolyMorphA {public:CPolyMorphA(int n) { a1= n;}

virtual void fn( ){cout<<" aaaa"<

class CPolyMorphB:public CPolyMorphA

{public:float a1;CPolyMorphB(int m,float p):CPolyMorphA(m),a1(p) { }

virtual void fn( ) {cout<<" bbbbbb"<

void call(CPolyMorphA & p){p.fn();}

void main( ){ CPolyMorphA s1(1001);}

通過call函数使用基类引用形参,保证了基类及其派生类族都可以调用,接口的统一使得实参更易使用。由于形参引用类型的定义使得虚函数fn( )随着调用者的不同而实现动态自动查找对应自己版本的功能,而这个多态的实现若是非引用或指针类型,是难以实现虚函数如此功能的。

6 总结

引用使得函数单一用retrun返值的局面得以改变,从而能访问函数临时栈意外的变量,突破了函数一般形参的局限性,可以去改写批量数据。若仅让引用具有只读性,可在形参中加const限制,如上文(ostream &,const COpOl&)只能输出自定义类型而不能改写。引用不像指针通过寻址间接访问变量,而是通过与引用变量同址同值即一个变量两个名字来使用,得得效率更高,性能更安全可靠,从而在当前诸多开发工具中广泛使用。以上案例通过课堂教学和上机实践方式,在实验班和卓越班的多次教学中很好提高了学生的积极性。

【参考文献】

[1]谭浩强.C++面向对象程序设计[M].北京:清华大学出版社,2006.

[2]钱能.C++程序设计教程[M].北京:清华大学出版社,1999.

[3]吕凤翥.C++语言基础教程[M].北京: 清华大学出版社,1999.

[责任编辑:田吉捷]

猜你喜欢

多态教学实践
分层多态加权k/n系统的可用性建模与设计优化
参差多态而功不唐捐
浅论高中化学生活化教学的实践与思考
浅谈初中物理实验教学与学生创新能力的培养
测量平差课程教学改革探讨与实践
多态及其在数据结构中的应用
烟碱型乙酰胆碱受体基因多态与早发性精神分裂症的关联研究