C结构中的私钥

时间:2013-05-23 22:51:42

标签: c struct keyword private

今天,我刚刚注意到C结构中的一个声明,说实话我起初就像是WTF。就像;

struct foo {
void *private;
//Some other members
};

信不信道这个结构正在编译而没有任何错误。那么添加这样一行(void * private)的目的是什么?

3 个答案:

答案 0 :(得分:3)

在纯C中没有private关键字,所以上述内容完全合法,尽管这是一个非常糟糕的主意。

这可能是无效的C ++,而C ++编译器肯定会产生错误。

答案 1 :(得分:1)

C中的{p> void*经常用于隐藏所使用的实际数据类型,有效地隐藏了界面中的一些实现细节。

答案 2 :(得分:0)

实际上你偶然发现了C和C ++之间的重要区别,即结构的实现方式。

在C中,结构包含只能包含原始数据类型和复合数据类型,而C ++结构提供更多功能,因为C ++中的结构类似于C中的结构,因此它们提供了其他功能,例如

  • 将会员分类为私人,公共或受保护的能力。
  • 可以包含成员函数。
  • C ++中的结构可以用作强制面向对象方法的工具,因为适用于类的所有OO功能(如继承)也适用于结构。

简而言之,上面的代码是有效的C,但无效的C ++。