我可以在纯C中使用getter和setter而不是使用外部变量吗?

最佳答案

首先,不要听任何人说“X语言中没有面向对象”,因为他们还没有真正理解OO是一种程序设计方法,完全脱离了语言语法。
有些语言有优雅的方式来实现oo,有些则没有。然而,可以用任何语言编写面向对象的程序,for example in C。类似地,你的程序不会仅仅因为你用java编写了一个合适的oo设计,或者因为你使用了某些语言关键字而自动获得一个合适的oo设计。
在c中实现私有封装的方式比在支持oo的语言中实现私有封装的方式粗糙一些,但它确实是这样的:
//module.h

void set_x (int n);
int get_x (void);

//module.c
static int x; // private variable

void set_x (int n)
{
  x = n;
}

int get_x (void)
{
  return x;
}

//main.c
#include "module.h"

int main (void)
{
  set_x(5);
  printf("%d", get_x());
}

可以称之为“类”或“adt”或“代码模块”,因为你喜欢。
每一个合理的C程序都是这样写的。并且已经写了过去的30-40年左右,只要程序设计已经存在。如果你说C程序中没有setter/getter,那是因为你没有使用C的经验。

07-24 09:46
查看更多