函数与方法的区别

本文简明扼要地阐述了函数与方法的区别,指出类外部定义的是函数,通常采用小写字母加下划线命名;而类内部定义的是方法,命名采用驼峰法。通过这一区分,有助于理解面向对象编程中函数与方法的不同角色。

总结就是一句话:类里边的是方法,类外边的是函数

扩展作用:

  • 函数的命名使用小写字母和下划线(小写字母开头)的方式,例如 getclientip;
  • 方法的命名使用驼峰法(首字母小写),例如 getUserName;

本文由博客一文多发平台 OpenWrite 发布!

### 成员函数方法在编程中的区别 #### 定义术语背景 在 C++ 中,“成员函数”(member function)是类的一部分,用于操作类的数据成员并封装行为逻辑。而在 Java 等其他面向对象语言中,这种概念通常被称为“方法”(method)。因此,在 C++ 中的“方法函数”的区别,就是“成员函数函数”的区别[^1]。 例如,在 C++ 中可以定义一个类及其成员函数: ```cpp class Rectangle { public: void set_dimensions(int l, int w) { length = l; width = w; } int area() { return length * width; } private: int length; int width; }; ``` 该类中的 `set_dimensions` `area` 是 `Rectangle` 类的成员函数。 #### 调用方式作用范围 成员函数必须通过类的对象进行调用,而函数则是全局的,可以直接调用。例如: ```cpp int result = multiply(4, 5); // 调用全局函数 ``` 对于成员函数: ```cpp Rectangle rect; rect.set_dimensions(6, 7); // 调用成员函数 cout << "Area of rectangle: " << rect.area() << endl; // 调用另一个成员函数 ``` #### 面向对象特性封装性 成员函数是面向对象编程的核心之一,能够将数据行为绑定在一起。它们不仅能够访问类的私有数据,还能封装类的行为逻辑。这种设计模式提高了代码的可维护性扩展性。例如,在上述代码中,`Rectangle` 类的成员函数封装了矩形的输入、处理输出逻辑,使外部用户无需了解具体的实现细节。 相比之下,函数不具备面向对象的特性,无法体现封装、继承或多态等概念。它们更适用于通用功能的实现。 #### 访问权限 成员函数可以直接访问类的所有成员,包括私有成员。这使得成员函数能够实现对类内部状态的安全管理封装。例如,在上述代码中,`area` 方法可以直接修改私有变量 `length` `width` 的值。 而函数没有直接访问类的私有成员的能力,除非通过类提供的公共接口。例如,如果尝试从外部访问 `Rectangle` 类的私有变量 `length`,会引发编译错误。 #### 示例对比 以下代码展示了函数成员函数的具体差异: 1. **全局函数示例** ```cpp #include <iostream> using namespace std; // 全局函数 int multiply(int a, int b) { return a * b; } int main() { int result = multiply(4, 5); // 调用全局函数 cout << "Result: " << result << endl; return 0; } ``` 2. **成员函数示例** ```cpp #include <iostream> using namespace std; class Rectangle { public: void set_dimensions(int l, int w) { length = l; width = w; } int area() { return length * width; } private: int length; int width; }; int main() { Rectangle rect; rect.set_dimensions(6, 7); // 调用成员函数 cout << "Area of rectangle: " << rect.area() << endl; // 调用另一个成员函数 return 0; } ``` 在第一个示例中,`multiply` 是一个独立的函数,可以直接调用;而在第二个示例中,`set_dimensions` `area` 是 `Rectangle` 类的成员函数,必须通过对象 `rect` 进行调用。 #### 总结 - **作用范围**:函数是全局的,而成员函数属于某个类。 - **访问权限**:函数不能直接访问类的私有成员,而成员函数可以。 - **调用方式**:函数通过名称直接调用,成员函数需要通过对象调用。 - **面向对象特性**:成员函数支持封装面向对象的设计,而函数不具备这些特性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值