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