C++入门:作用域、存储类与函数特性
需积分: 10 94 浏览量
更新于2024-08-19
收藏 2.77MB PPT 举报
"作用域和存储类-C++入门课件"
C++编程语言中的作用域和存储类是理解代码组织和内存管理的关键概念。作用域决定了变量和标识符的有效范围,而存储类则影响变量的生命周期和可见性。
首先,让我们深入探讨作用域:
1. **块作用域**:在花括号`{}`内的任何地方定义的变量具有块作用域,这些变量只在定义它们的代码块内有效。一旦超出这个块,变量就无法访问。
2. **文件作用域**:在任何函数外部定义的变量具有文件作用域,这意味着它们在整个源文件中都是可见的,除非被其他作用域覆盖。
3. **函数原型作用域**:在函数原型中声明的参数具有函数原型作用域,它们仅在函数原型中存在,不影响函数定义。
4. **函数作用域**:在函数内部定义的变量具有函数作用域,它们只在该函数内部有效。
5. **类作用域**:在类定义中声明的成员变量和成员函数具有类作用域,它们在整个类内都可访问,并可以通过对象实例进行操作。
接下来,我们讨论具有缺省参数值的函数:
C++允许在函数定义时为参数提供缺省值,使得在调用函数时可以省略某些参数。如示例所示,`int fac(int n=2)` 函数中,如果没有提供参数,它会默认使用2。当在`main()`函数中调用`fac(6)`和`fac()`时,我们可以看到缺省参数值的使用。
但是,使用缺省参数值有几点需要注意:
1. **缺省参数不可靠左设置**:意味着如果一个函数有多个参数,从右向左可以设定缺省值,但不能从左向右。
2. **函数原型可不写参数名**:在函数原型中,可以只指定参数类型和缺省值,不需写参数名,如`float v(float, float=10, float=20)`。
3. **缺省值只能在定义时指定一次**:函数原型中设定了缺省值后,在函数定义时不应再次设定。
最后,我们来看函数的重载:
**函数重载(Overloading)**是C++的一个重要特性,允许在同一个作用域内使用相同的函数名但有不同的参数列表。这使得根据传入的参数类型或数量来选择合适的函数成为可能。在`fun`的例子中,`int fun(int a, int b)`和`int fun(int a)`就是重载函数。重载的关键在于:
1. **不同的参数列表**:重载函数必须通过参数个数、参数类型或两者来区别。例如,`int fun(int a, int b)`和`int fun(int a)`。
2. **返回类型不决定重载**:仅返回类型不同而参数列表相同的两个函数不是重载函数,因为编译器是根据参数来决定调用哪个函数的。
请注意,例子中`float fun(int a, int b)`和`int fun(int a, int b)`的返回类型不同,但这是无效的重载,因为编译器无法根据返回类型来区分这两个函数。因此,正确使用重载可以提高代码的可读性和效率。
了解并熟练掌握作用域、存储类、缺省参数和函数重载这些概念,对编写高效、清晰的C++代码至关重要。
2011-04-01 上传
2023-02-02 上传
2012-05-08 上传
2012-11-30 上传
2008-05-25 上传
2008-08-24 上传
2008-03-01 上传
2009-08-03 上传
2009-09-29 上传
魔屋
- 粉丝: 26
- 资源: 2万+
最新资源
- Python中快速友好的MessagePack序列化库msgspec
- 大学生社团管理系统设计与实现
- 基于Netbeans和JavaFX的宿舍管理系统开发与实践
- NodeJS打造Discord机器人:kazzcord功能全解析
- 小学教学与管理一体化:校务管理系统v***
- AppDeploy neXtGen:无需代理的Windows AD集成软件自动分发
- 基于SSM和JSP技术的网上商城系统开发
- 探索ANOIRA16的GitHub托管测试网站之路
- 语音性别识别:机器学习模型的精确度提升策略
- 利用MATLAB代码让古董486电脑焕发新生
- Erlang VM上的分布式生命游戏实现与Elixir设计
- 一键下载管理 - Go to Downloads-crx插件
- Java SSM框架开发的客户关系管理系统
- 使用SQL数据库和Django开发应用程序指南
- Spring Security实战指南:详细示例与应用
- Quarkus项目测试展示柜:Cucumber与FitNesse实践