第1章 C++知识回顾.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第1章C知识回顾

第1章 C++知识回顾 本章将简要回顾Windows可视化编程必须掌握的C++基础知识,这包括函数指针、重载、模板、虚函数及其多态性等等,目的是为下一步的学习打好基础。 另外,因为是综合复习,所以不涉及知识的顺序,而是相互交叉、有机融合。但在每节之后,尽可能联系它们在MFC中的应用实例,以方便以后的学习。 主要复习如下内容: 1.1 重载 1.2 模板 1.3 虚函数和多态性 1.4 函数指针和类成员指针 1.5 静态成员 1.6 分类、聚合和嵌套 1.1 重载 重载分为两大类:函数重载和运算符重载。 1.1.1 函数重载和默认参数 C++允许为同一个函数定义几个版本,这称为函数重载。 函数重载使一个函数名具有多种功能,即具有“多种形态”,所以又称这种形态为多态性。 本节只涉及实函数的多态性,虚函数的多态性将另外讲述。 【例1.1】函数重载产生多态性的例子。 #include iostream using namespace std; double max(double,double); //2个实型参数的函数原型 int max(int,int); //2个整型参数的函数原型 char max(char,char); //2个字符型参数的函数原型 int max(int,int,int); //3个整型参数的函数原型 void main( ) { coutmax(2.5, 17.54) max(56,8) max(w,p)endl; coutmax(5,9,4)=max(5,9,4) max(5,4,9)= max(5,4,9)endl; } double max(double m1, double m2) { return(m1m2)?m1:m2;} int max(int m1, int m2) {return(m1m2)?m1:m2;} char max(char m1, char m2) {return(m1m2)?m1:m2;} int max(int m1, int m2, int m3) { int t=max(m1,m2); return max(t,m3); } C++能够正确调用相应函数,程序输出结果如下: 17.54 56 w max(5,9,4)=9 max(5,4,9)=9 从函数原型可见,它们的区别一是参数类型不同,二是参数个数不同。编译器在编译时,能根据源代码调用固定的函数标识符,然后由连接器接管这些标识符,并用物理地址代替它们,这就称为静态联编或先期联编。 同理,可以设计一个求整数之和的函数。不过,如果要求4个整数之和,使用函数重载则需要编写3个函数。这时可编写一个具有默认参数的函数。 【例1.2】编写一个具有默认参数的函数。 #include iostream using namespace std; int add(int m1=0, int m2=0, int m3=0, int m4=0) {return m1+m2+m3+m4;} void main() { coutadd(1,3),add(1,3,5), add(1,3,5,7)endl;} 程序输出结果为:4,9,16 使用默认参数,就不能对少于参数个数的函数进行重载。例如,这里不能重载具有3个整型参数的add函数,因为编译器决定不了是使用3个参数,还是4个参数的add函数,只能对多于4个参数的add函数重载。另外,仅有函数返回值不同也是区分不了重载函数的。当使用默认参数设计类的构造函数时,要特别注意。 一个类可以有多个构造函数,这也是典型的函数重载。可以使用域定义符“::”显式地指出调用的是基类还是派生类的重载函数。 1.1.2 重载与名字支配规律的区别 如果基类和派生类的成员函数具有相同的参数表,则不属于函数重载。这时按名字支配规律调用,并且使用域定义符“::”防止二义性。下面是在基类和派生类中使用参数相同的同名函数的例子。 【例1.3】演示在基类和派生类中使用参数相同的同名函数的例子。 #include iostream using namespace std; class Point { private: int x,y; public: Point(int a, int b){x=a; y=b;} void Show() //基类的Show()函数 {coutx=x,y=yendl;}; }; class Rectangle : public Point {

文档评论(0)

l215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档