C++程序设计基础:面向过程与面向对象

需积分: 0 1 下载量 167 浏览量 更新于2024-07-14 收藏 1.2MB PPT 举报
"默认形参值的说明次序-第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++程序员至关重要。