使用struct实现面向对象编程的封装

虽然C是面向过程的语言,可是这不表明C不能使用面向对象的思想,本质上说语言只是一种手段而已,一种外在的表现形式,支持面向对象的语言只是经过设计的特定的关键字更好的表现了面向对象编程而已.C中也可使用面向对象的思想,经过struct结构体和函数指针来实现.java

struct表示java或C#中的类Class,struct中的字段表示类中的属性,函数指针表示类中的方法.简单的实现代码以下:编程

#include <stdio.h>

/* 定义一个结构体,这个结构体至关于类 name,age字段至关于属性 函数指针sayhello,表明这个"类"的方法 */ typedef struct person { char *name; int age; int (*sayhello)(const struct person *p); }Person; //实现"类"中定义的方法
int _sayhello(const struct person *p) { printf("My name is %s,my age is %d.\n", p->name, p->age); return 0; } int main(void) { //声明一个实例并给其赋值,下面的赋值方法在GNU的gcc中是支持的
    Person p = { //字段赋值
        .name = "Linux", .age = 22, //函数指针实现
        .sayhello = _sayhello, }; //调用"类"的方法
    p.sayhello(&p); return 0; }

这样就简单的实现了一个类的封装.函数

相关文章
相关标签/搜索