-1

在 C 中,您可以像这样实现数据隐藏:

//库头
typedef struct foo* 别名;
//其他的东西....

//库源,可以随便改
// 只要定义了 foo
结构富{
    整数日期;
};
//(类型别名 -> 日期;// 可访问
//然后是主类
诠释主要(){
    别名;
    made -> date;// 不可访问
}

那么这是否意味着struct fooAlias可以抑制多态行为,给定多个源文件?

4

1 回答 1

3

“......struct foo或者Alias可以抑制多态行为,给定多个源文件?”

如果您指的是多态性(即基于在运行时调用特定于实例的行为的面向对象的概念),那么,库的实现将提供不同定义的事实struct与多态性无关,因为这种行为是在编译时定义的。


另请注意

typedef struct foo* Alias;

只是为该类型创建一个别名,struct foo*隐藏Alias作为指针的信息。

那么当你这样做时:
Alias made;
made -> date;

它实际上相当于:

struct foo* made;
made -> date;

这只不过是取消引用未初始化的指针,这会导致未定义的行为

于 2013-10-09T15:02:04.220 回答