在 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;
这只不过是取消引用未初始化的指针,这会导致未定义的行为。