- 1、本文档共51页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象程序设计-3讲述
3.2 内联函数
1、内联函数定义
在一般函数定义前面加上保留关键字inline,该函数即被说明为内联函数。
例如:
inline int add2(int n){return n+2;}
对于内联函数,C++有可能直接用函数体代码来替代对函数的调用,这一过程称为函数体的内联展开。(p82)
1
不能有循环、switch、递归等
例:
#includeiostream.h
inline float max(float a, float b)
//内联函数,计算最大值
{…}
void main()
{
float score[2]; //存放2个学生的分数
float max_score;
max_score =max(score[0],score[1]);
//调用内联函数求最大值,在编译时就已经被替换为了max的函数体,而不是本语句
cout“max score =” max_score endl;
}
3.2 内联函数(续1完)
2
inline应该放在哪里
// a.h
inline void foo(void);
// a.c
inline void foo(void) { }
// b.c
#include a.h
void bar(void) { foo(); }
这种用法 inline 是不起任何作用的
只有这样:
// a.h
inline void foo(void) { }
// b.c
#include a.h
void bar(void) { foo(); }
这样才能真正的内联; 内联是在编译期间处理的
3
内联函数用法总结
何时需要用
频繁使用
代码简单
潜在问题
增加编译后的代码长度
3.3 带默认形参值的函数
函数在定义时可以预先定义出默认的形参值。调用时如果给出实参,则用实参初始化形参;如果没有给出实参,则采用预先定义的默认形参值。
例:
int area(int l=5,int w=5)
{ return l*w;}
void main()
{
area(); //采用默认值5和5进行计算,返回结果25;
area(10,2); //实参10和2传递给形参,返回结果20;
area(2);
//将值2传递给形参l,w采用默认值5,返回值10;
}
5
注意:
形参默认值应在函数原型中给出(而不是在函数体中给出)
默认形参值必须按照从右向左顺序定义。调用时,实参按从左向右顺序初始化形参。(即如果有三个形参,实参为一个时,则会初始化第一个形参,而另外两个要采用默认值…)。所以,在有默认值的形参右边,不能出现无默认值的形参。
3.3 带默认形参值的函数(续1)
6
3.3 带默认形参值的函数(续2完)
例:判断以下用法是否正确?
int area(int l,int w=4);
int area(int l=3,int w) ;
int area(int l=3,int w,int h=9);
!错误,这样如果调用时为area(10),则10会赋值给l,而w得不到初始值,编译错误(missing default parameter for parameter 2)
7
3.4 函数的重载
重载:两个以上的函数,取相同的函数名,但形参的个数或者类型不同,编译器根据实参和形参的类型以及个数的最佳匹配,自动确定调用哪一个函数,这就是函数的重载。
C++允许功能相近的函数在相同的作用域内以相同函数名定义,从而形成重载。方便使用和记忆。
8
重载的要求:
1、形参类型不同
例:
int add(int x,int y);
float add(float x,float y);
2、形参个数不同
int add(int x,int y);
int add(int x,int y,int z);
3.4 函数的重载(续1)
9
思考:是否可以用返回类型区分两个
重载函数?
第3讲 类与对象(1)
11
回顾:面向过程的设计方法
重点:
如何实现的细节和过程,将数据与函数分开。
形式:
主模块+若干个子模块(main()+子函数)。
特点:
自顶向下,逐步求精——功能分解。
缺点:
效率低,程序的可重用性差。
面向对象的思想
12
类与对象(本讲主题:只有一个类)
以学生信息管理为例:
struct- class
成员函数
访问控制
构造函数
拷贝构造函数
析构函数
struct STD{
char name[12];
char gender;
float
您可能关注的文档
- 非谓语动词精讲与精炼讲述.ppt
- 非谓语动词练习及答案讲述.doc
- 非谓语动词复习课件(32张PPT)讲述.ppt
- 非谓语动词用法的高考考查(共14张PPT)讲述.ppt
- 非谓语动词---V.-ing讲述.ppt
- 非谓语动词考点易混点讲述.ppt
- 非谓语动词经典用法讲解讲述.doc
- 食品生许可证分类目录详解.docx
- 非谓语动词课件讲述.ppt
- 非谓语动词与with复合结构讲述.ppt
- 2024至2030年中国人造棉面料行业投资前景及策略咨询报告.docx
- 重庆市渝中区遴选公务员2024年国家公务员考试考试大纲历年真题10340笔试历年典型考题及解题思路附.docx
- 2024至2030年中国甲基苯乙酮行业深度调研及发展预测报告.docx
- 2024至2030年中国羚羊角类饮片行业深度调查与前景预测分析报告.docx
- 重庆市面向中国农业大学定向选调2024届大学毕业生2024年国家公务员考试考试大纲历年真题14笔试历.docx
- 重庆市面向西北工业大学定向选调2024届大学毕业生00笔试历年典型考题及解题思路附答案详解.docx
- 中国不动杆菌感染治疗药行业市场现状分析及竞争格局与投资发展研究报告2024-2029版.docx
- 2024至2030年全球与中国ETL软件市场现状及未来发展趋势.docx
- 初中八年级(初二)生物下册期末考试1含答案解析.docx
- 干簧式继电器项目申请报告.docx
文档评论(0)