{site_name}

{site_name}

🌜 搜索

C 接口(抽象类)指的是一组方法的声明,这些方法没有具体实现,只有函数名、参数列表和返回类型等信息

编程 𝄐 0
c++接口和抽象类,c抽象类和接口可以实例化吗,c++什么是抽象类,有什么作用,c++抽象类怎么定义,c++抽象数据类型,c++接口和抽象类的区别
C 接口(抽象类)指的是一组方法的声明,这些方法没有具体实现,只有函数名、参数列表和返回类型等信息。C 接口通常用于定义一组公共的操作接口,以使得不同的实现可以互相替换使用,从而提高代码的可复用性、可扩展性和可维护性。

在 C 语言中,可以使用结构体来定义接口,如下所示:


// 定义一个接口结构体
typedef struct {
void (*foo)(void); // 定义一个无参无返回值的函数指针
int (*bar)(int, char*); // 定义一个带两个参数和一个返回值的函数指针
} Interface;

// 定义一个实现接口的结构体
typedef struct {
Interface base; // 嵌入一个基础接口
int value;
} Implementation;

// 实现 foo 方法
void implementation_foo(void) {
printf("implementation_foo\n");
}

// 实现 bar 方法
int implementation_bar(int a, char* b) {
printf("implementation_bar: %d, %s\n", a, b);
return a + strlen(b);
}

// 初始化一个实现结构体
Implementation impl = {
.base.foo = implementation_foo, // 设置 foo 方法的实现
.base.bar = implementation_bar, // 设置 bar 方法的实现
.value = 42, // 初始化一个字段
};

// 调用接口方法
impl.base.foo(); // 调用 implementation_foo
int result = impl.base.bar(123, "hello"); // 调用 implementation_bar


在这个例子中,我们定义了一个接口 Interface,它包含两个方法 foo 和 bar。然后我们定义了一个实现结构体 Implementation,它嵌入了基础接口 Interface,并且实现了 foo 和 bar 方法。最后我们初始化了一个实现结构体 impl,并且调用了其中的方法。

通过这种方式,我们可以将接口和实现分离,从而使得代码更加模块化、可测试和可维护。