功能还是方法?

时间:2012-01-30 19:59:23

标签: c naming-conventions abstract-data-type

如果我在C中编写抽象数据类型,编写的函数是为了对这些数据类型执行操作并在接口(.h文件)中公开,称为 functions methods < / em>,还是完全不同的东西?我似乎无法在任何地方找到建设性的答案。 方法是C ++特定术语吗?

6 个答案:

答案 0 :(得分:6)

  

方法是否是C ++特定术语?

“方法”是面向对象的编程术语,指的是作为对象命名空间一部分的函数。因此,您可以使用C ++,Java,Objective-C等语言为对象创建方法。另外,在C语言中,您仍然拥有独立的函数,而不是方法。

请记住,类方法的“官方”C ++术语是“成员函数”,并在规范的第9.3节中进行了描述。

答案 1 :(得分:4)

我总是使用“method”作为“成员函数”的同义词,这意味着C ++,因为C没有这样的东西。

然而,另一方面,人们可能会认为foo_alter_state的作用在于:

struct foo {
  // implementation stuff;
}; 

void foo_alter_state(struct foo *self);

仍是一种在foo上运行的方法,虽然是独立的。它基本上是C中的OOP,但是手工实现。

如果struct foo;仅在标题中声明,但未在任何地方公开定义,则此观点可能尤其如此。

答案 2 :(得分:3)

方法是与类相关的函数。

由于C中不存在类,因此技术上一切都是函数。

答案 3 :(得分:2)

Method通常用于描述作为OOP中类的一部分的“函数”。函数只是 - 函数,而不是类的一部分。

在.h文件中我称之为“函数声明”,在.c中我称之为“函数实现”......我不是专家,只是我的.02。

答案 4 :(得分:1)

我不认为这是一个特别有用的区别,但一般来说,你称之为函数,因为单词 method 意味着一大堆C不提供的OOP东西。像the following

  

方法具有特殊属性,在运行时,它们可以访问   存储在类实例(或类实例或类)中的数据   对象或对象)它们与之相关并因此能够   控制实例的状态。

但是我经常听到在Java上长大的人将C 函数称为方法,我从未对他们的意思感到困惑。甚至没有一点点。

但是,您可能希望进行以下(松散)区分:

  • 程序是执行某项操作的代码块

  • 功能是将一个或多个输入与输出相关联的过程

  • 方法是属于某个类或该类实例的过程

答案 5 :(得分:1)

严格地说,函数是为给定输入提供输出的操作。而方法是绑定到类型的函数。 C只有功能,我认为你认为没有任何不同。

但是,如果您正在实现ADT,例如,将函数指针放在结构中(对于获取结构实例的上下文指针的函数),那么您使用方法模仿对象,那么我看不到有理由将它们称为“作为功能实现的方法”。