C++程序设计基础:面向过程与面向对象
"默认形参值的说明次序-第1讲 C++语言程序设计基础" 在C++语言中,函数的形参(形式参数)可以带有默认值,这允许在函数调用时省略某些参数,系统会自动使用预设的默认值。然而,设置默认形参值时有一个重要的规则需要遵循:默认形参值必须从右向左顺序声明。这意味着,如果一个函数有多个形参,并且你想为其中的一些设定默认值,你需要首先为最右边的形参设定,然后依次向左设置。 例如,在下面的函数声明中: ```cpp int add(int x, int y=5, int z=6); ``` 这里的`y`和`z`都有默认值,而`x`没有。这是有效的,因为默认形参值从右向左设置。但如果你尝试这样做: ```cpp int add(int x=1, int y, int z=6); ``` 这个声明将会导致错误,因为在`z`的默认值右侧还有非默认形参`y`。C++不支持这种声明方式,因为从右向左的规则被打破了。 函数的调用遵循从左向右传递实参的顺序。因此,当你调用`add(3)`时,C++会理解为`add(3, 5, 6)`,因为默认值会被应用到未提供的实参上。如果调用`add(3, 4)`,则会理解为`add(3, 4, 6)`,默认值只用于最右边未指定的`z`。 接下来,我们讨论一下程序设计语言的发展。早期的编程语言包括机器语言和汇编语言,它们都是低级语言,直接与硬件交互。随着技术的进步,高级语言如C++、Java和C#应运而生,它们更接近人类语言,提高了编程的效率和可读性。 C++是一种面向对象的编程语言,与面向过程的C语言不同。面向过程编程以过程(函数)为中心,通过一系列步骤解决问题。它提倡自顶向下、逐步求精的结构化设计方法,将程序拆分成独立的功能模块,但这种方法在处理复杂系统时可能会显得可重用性差,数据安全性和维护性较低。 相反,面向对象编程(OOP)强调的是对象,即具有属性(数据)和行为(方法)的实体。对象是基于类创建的,类是对象的蓝图,定义了对象的属性和方法。封装是OOP的核心概念,它隐藏对象的内部细节,提供公共接口供其他部分代码使用。继承允许类之间共享属性和行为,而多态性允许不同的对象对同一消息作出不同的响应,增加了代码的灵活性和扩展性。 在五子棋问题的例子中,面向过程的解决思路会将游戏的每个步骤分解为单独的函数,而面向对象的方法则可能创建`ChessPlayer`和`GameBoard`类,每个类都包含自己的行为,比如移动棋子、检查胜负等,这样的设计更利于复用和扩展。 总结来说,C++的默认形参值规则是为了保持代码的清晰性和一致性,而面向对象编程则提供了更强大的抽象和模块化工具,使得复杂软件的开发变得更加高效和灵活。理解和掌握这些概念对于成为一名专业的C++程序员至关重要。
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![tar](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://profile-avatar.csdnimg.cn/e9b7560aaceb4bfbb2d071770a8afbc3_weixin_42185419.jpg!1)
- 粉丝: 12
- 资源: 2万+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 计算机人脸表情动画技术发展综述
- 关系数据库的关键字搜索技术综述:模型、架构与未来趋势
- 迭代自适应逆滤波在语音情感识别中的应用
- 概念知识树在旅游领域智能分析中的应用
- 构建is-a层次与OWL本体集成:理论与算法
- 基于语义元的相似度计算方法研究:改进与有效性验证
- 网格梯度多密度聚类算法:去噪与高效聚类
- 网格服务工作流动态调度算法PGSWA研究
- 突发事件连锁反应网络模型与应急预警分析
- BA网络上的病毒营销与网站推广仿真研究
- 离散HSMM故障预测模型:有效提升系统状态预测
- 煤矿安全评价:信息融合与可拓理论的应用
- 多维度Petri网工作流模型MD_WFN:统一建模与应用研究
- 面向过程追踪的知识安全描述方法
- 基于收益的软件过程资源调度优化策略
- 多核环境下基于数据流Java的Web服务器优化实现提升性能
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)