《VisualC教程第二版》第3章C进阶

《VisualC教程第二版》第3章C进阶

ID:37396102

大小:368.31 KB

页数:25页

时间:2019-05-12

《VisualC教程第二版》第3章C进阶_第1页
《VisualC教程第二版》第3章C进阶_第2页
《VisualC教程第二版》第3章C进阶_第3页
《VisualC教程第二版》第3章C进阶_第4页
《VisualC教程第二版》第3章C进阶_第5页
资源描述:

《《VisualC教程第二版》第3章C进阶》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第3章C++进阶3.1多态和虚函数3.2运算符重载3.3输入输出流库3.4模板3.1多态和虚函数3.1.1虚函数[例Ex_VirtualFunc]虚函数的使用。#includeclassCShape{public:virtualfloatarea(){return0.0;}};classCTriangle:publicCShape{public:CTriangle(floath,floatw){H=h;W=w;}floatarea(){return(float)(H*W*0.5);}private:floatH,W;};classCCircle:publicCShap

2、e{public:CCircle(floatr){R=r;}floatarea(){return(float)(3.14159265*R*R);}private:floatR;};voidmain(){CShape*s[2];s[0]=newCTriangle(3,4);cout<area()<area()<

3、基类指针才可实现。虚函数在用对象名和成员运算符以正常方式调用时,不能达到其效果。(3)如果不使用new来创建相应的派生类对象,也可用下列方法来实现:voidmain(){CShape*p1,*p2;CTriangletri(3,4);CCirclecir(5);p1=&tri;p2=○cout<area()<area()<

4、数,以便实现撤消对象时的多态性。3.1多态和虚函数3.1.2纯虚函数和抽象类定义一个基类时,会遇到这样的情况:无法定义基类中虚函数的具体实现,其实现完全依赖于其不同的派生类。例如,一个“形状类”由于没有确定的具体形状,因此其计算面积的函数也就无法实现。这时可将基类中的虚函数声明为纯虚函数。声明纯虚函数的一般格式为:virtual<函数类型><函数名>(<形数表>)=0;它与一般虚函数不同的是:在纯虚函数的形参表后面多了个“=0”。把函数名赋于0,本质上是将指向函数的指针的初值赋为0。需要说明的是,纯虚函数不能有具体的实现代码。抽象类是指至少包含一个纯虚函数的特殊的类。它本身不能被实例化,也就

5、是说不能声明一个抽象类的对象。必须通过继承得到派生类后,在派生类中定义了纯虚函数的具有实现代码,才能获得一个派生类的对象。与虚函数使用方法相同,也可以声明指向抽象类的指针,虽然该指针不能指向任何抽象类的对象,但可以通过该指针获得对派生类成员函数的调用。事实上,纯虚函数是一个特殊的虚函数。3.2运算符重载3.2.1运算符重载的语法<函数类型><类名>::operator<重载的运算符>(<形参表>){…}//函数体运算符重载函数的函数是以特殊的关键字operator开始的,因而编译器很容易与其他的函数名区分开来。重载的运算符必须是合法的运算符。说明:(1)当用成员函数实现双目运算符的重载时,运

6、算符的左操作数一定是对象,右操作数作为调用运算符重载函数的参数,参数可以是对象、对象的引用或是其他类型的参数。(2)不是所有的运算符都可以重载。不允许重载的运算符除三目运算符“?:”外,还有成员操作符“.”、成员指针取值操作符“*”、作用域操作符“::”以及sizeof运算符。(3)只能对已定义了的运算符进行重载,而且当重载一个运算符时,该运算符的操作数个数、优先级和结合性是不能改变的。3.2运算符重载[例Ex_Complex]运算符的简单重载。#includeclassCComplex{public:CComplex(doubler=0,doublei=0){rea

7、lPart=r;imagePart=i;}voidprint(){cout<<"该复数实部="<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。