在 C 中,您可以像这样实现数据隐藏:
//库头 typedef struct foo* 别名; //其他的东西.... //库源,可以随便改 // 只要定义了 foo 结构富{ 整数日期; }; //(类型别名 -> 日期;// 可访问 //然后是主类 诠释主要(){ 别名; made -> date;// 不可访问 }
那么这是否意味着struct foo
或Alias
可以抑制多态行为,给定多个源文件?
在 C 中,您可以像这样实现数据隐藏:
//库头 typedef struct foo* 别名; //其他的东西.... //库源,可以随便改 // 只要定义了 foo 结构富{ 整数日期; }; //(类型别名 -> 日期;// 可访问 //然后是主类 诠释主要(){ 别名; made -> date;// 不可访问 }
那么这是否意味着struct foo
或Alias
可以抑制多态行为,给定多个源文件?
“......struct foo
或者Alias
可以抑制多态行为,给定多个源文件?”
如果您指的是多态性(即基于在运行时调用特定于实例的行为的面向对象的概念),那么不,库的实现将提供不同定义的事实struct
与多态性无关,因为这种行为是在编译时定义的。
另请注意
typedef struct foo* Alias;
只是为该类型创建一个别名,struct foo*
它隐藏了Alias
作为指针的信息。
Alias made;
made -> date;
它实际上相当于:
struct foo* made;
made -> date;
这只不过是取消引用未初始化的指针,这会导致未定义的行为。