- 8
- 0
- 约2.28万字
- 约 128页
- 2017-03-06 发布于广东
- 举报
大学CC++程序设计案例教程张殿龙)c_cpp11课件教学.ppt
PPT研究院 POWERPOINT ACADEMY * * 运算符重载为成员函数 【例11.17】运算符重载为成员函数。 // 11-17.cpp #includeiostream.h class Complex { public: Complex(double r=0, double i=0):real(r),imag(i){} Complex operator + (Complex); friend ostream operator (ostream , Complex); private: double real; double imag; }; 运算符重载为成员函数 Complex Complex::operator + (Complex c) { return Complex(real + c.real, imag + c.imag); } ostream operator (ostream out, Complex c) { out ( c.real + c.imag i); return out; } 运算符重载为成员函数 int main() { Complex c1(2,6),c2(3,4),c3; c3 = c1 + c2; // 相当于 c3 = c1.operator + (c2); cout c1 + c2 = c3 endl; // 调用operator (ostream out, Complex c)函数 return 0; } 运算符重载 运算符重载在C++中是非常有用的,下面几点值得注意: (1)重载运算符与原有的运算符的使用相同,相同的操作数个数、相同的优先级、相同的结合性; (2)有少数运算符不能重载,如“.”、“.*”、“::”、“sizeof”、“?:”; (3)有些运算符不能用友元函数重载,如“=”、“()”、“[]”、 “-”; (4)双目运算符重载为成员函数,则第一个操作数类型应为成员函数所属类的类型; (5)若双目运算符的第一个操作数类型不是自定义类类型,则应使用非成员函数重载该运算符; (6)一般来说,一元运算符、符合赋值运算符(如“+=”、“%=”等)、“=”、“()”、“[]”、“-”等重载为成员函数;其他二元运算符重载为非成员函数。 模板的概念 我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义max()函数需要对不同的数据类型分别定义不同重载(Overload)版本。 // 函数1 int max(int x,int y){ return(xy)?x:y ; } // 函数2 float max( float x,float y){ return (xy)? x:y; } // 函数3 double max(double x,double y){ return (xy)? x:y; } 模板的概念 但如果在主函数中,我们分别定义了 char a,b; 那么在执行max(a,b);时 程序就会出错,因为我们没有定义char类型的重载版本。 现在,我们再重新审视上述的max()函数,它们都具有同样的功能,即求两个数的最大值,能否只写一套代码解决这个问题呢?这样就会避免因重载函数定义不全面而带来的调用错误。为解决上述问题C++引入模板机制,模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码可重用性。模版可以分为两类,一个是函数模版,另外一个是类模版。 函数模板的写法 函数模板的一般形式如下: Template class或者也可以用typename T 返回类型 函数名(形参表) {//函数定义体 } 说明:template是一个声明模板的关键字,表示声明一个模板关键字class不能省略,如果类型形参多余一个,每个形参前都要加class。 函数模板的写法 【例11.18】函数模板举例。 // 11-18.cpp #include iostream using namespace std; /* 声明一个函数模版,用来比较输入的两个相同数据类型的参数的大小,class也可以被typename代替,T可以被任何字母或者数字代替。*/ template class T T min(T x,T y) { return(xy)?x:y; } 较小整数:2 较小实数:1.5 函数模板的写法 int main( ) { int n1=2,n2=10; double d1=1.5,d2=5.6; cout 较小整数:min(n1,n2)endl;
您可能关注的文档
- 可编程控制器第二版)黄云龙主编吴国强郁炜副主编第3章三菱FX系列PLC的基本指令课件教学.ppt
- 可编程控制器第二版)黄云龙主编吴国强郁炜副主编第4章三菱FX系列PLC的步进指令课件教学.ppt
- 可编程控制器第二版)黄云龙主编吴国强郁炜副主编第5章三菱FX系列PLC的功能指令28课件教学.ppt
- 可编程控制技术及应用西门子S7-200)邱俊项目一课件教学.ppt
- 商务英语口语含1磁带隋晓冰主编商务英语口语unit1-unit3)Unit1课件教学.ppt
- 商务英语口语含1磁带隋晓冰主编商务英语口语unit1-unit3)Unit2课件教学.ppt
- 商务英语口语含1磁带隋晓冰主编商务英语口语unit1-unit3)Unit3课件教学.ppt
- 商务英语口语含1磁带隋晓冰主编商务英语口语unit1-unit3)商务英语口语开始)课件教学.ppt
- 商务英语口语含1磁带隋晓冰主编商务英语口语unit10-unit11)Unit10课件教学.ppt
- 商务英语口语含1磁带隋晓冰主编商务英语口语unit10-unit11)Unit11课件教学.ppt
- 25-26学年政治(部编版)选择性必修第二册课件:第1单元 周清1 民法中的人身权及财产权.pptx
- 25-26学年政治(部编版)选择性必修第二册课件:1.4.1 权利保障 于法有据.pptx
- 2025北京丰台区高二(上)期中地理(A卷)含答案.docx
- 2025北京三帆中学初三(上)开学考英语试题含答案.docx
- 2025北京一零一中初三9月月考语文试题含答案.docx
- 2025北京海淀区初三(上)期中道法试题含答案.docx
- 2025北京丰台区高一(上)期中政治(A卷)含答案.docx
- 25-26学年政治统编版必修4课件:3.3 唯物辩证法的实质与核心.pptx
- 25-26学年政治统编版必修4课件:7.2 正确认识中华传统文化.pptx
- 湖北省部分高中2026届高三上学期二模联考 历史试卷.docx
最近下载
- 世界多极化课件-2026届高考政治一轮复习.pptx VIP
- 情感纠纷和解协议书.docx VIP
- 《合同变更与解除》课件 —— 深入解析合同法律风险与管控策略.ppt VIP
- 《现代物流学》说课.ppt VIP
- 2024年苏教版五年级(上)期末考试数学试卷(附答案).pdf VIP
- 浙江省杭州市下沙区杭四下沙2024-2025学年高二上学期期末考物理试卷(原卷版+解析版).docx VIP
- 第六课+走进经济全球化课件-2026届高考政治一轮复习统编版选择性必修一当代国际政治与经济.pptx VIP
- 新解读(2025)《HJ_T 400-2007车内挥发性有机物和醛酮类物质采样测定方法》.pptx VIP
- 《深圳市高质量幼儿园过程性质量提升指导手册》知识检测题测试卷附答案.docx
- 物流公司安全管理制度范本.docx VIP
原创力文档

文档评论(0)