Possible Duplicate:
How do you implement a class in C?
在我的测试中,我被告知我需要找到一种在 C 中实现以下类的方法
class A
{
private:
int a,b;
public:
void func1();
int c,d;
protected:
int e,f;
void fun();
};
C 编译器是否也支持访问说明符 private、public 和 protected inside 结构?
C 中没有类,只有结构。 C++ 中有类。
也没有private
:
struct A
{
int a, b;
int c, d;
int e, f;
};
void func1( struct A* );
void fun( struct A* );
但一切都是公开的。
为了使事情更加封装,您将隐藏结构 A 的实际实现细节并仅显示带有公共(public)方法的前向声明。
protected
没有任何实际意义,因为没有继承。您可以通过将您的详细信息或其功能暴露给某些内部模块来实现“友元”,但友元与 protected 不同,后者在 C 中根本不存在。
在您的类(class)中,您已将其中两个成员公开,但如果我们“隐藏”结构 A,我们将隐藏所有内容,因此请改为提供 getter 和 setter。
或者我们可以“隐藏”我们结构的一部分,比如:
结构 A1;
struct A
{
struct A1 * privatePart;
int b, c; // public part
};
虽然它变得“困惑”,因为您必须开始分配私有(private)部分(请记住,在 C 中没有智能指针或析构函数,因此您必须更加小心内存管理)。
很多 C API 为此使用的是一种命名约定,它们将“私有(private)”变量称为“保留”,通常是 reserved1、reserved2 等。编译器不会阻止您写入它们,但您显然会这样做您自己的风险,并且意图很明确,您不应该访问这些成员(直接复制或类似的除外)。