zoukankan      html  css  js  c++  java
  • 使用struct实现面向对象编程的封装

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

    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.
    ", p->name, p->age);
        return 0;
    }
    
    int main(void)
    {
        //声明一个实例并给其赋值,下面的赋值方法在GNU的gcc中是支持的
        Person p = {
            //字段赋值
            .name = "Linux",
            .age = 22,
            //函数指针实现
            .sayhello = _sayhello,
        };
        //调用"类"的方法
        p.sayhello(&p);
    
        return 0;
    }

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

  • 相关阅读:
    touch创建文件
    excel如何冻结首行或首列及首行首列同时冻结
    cd mkdir mv cp rm 命令目录相关操作
    months_between()用法
    sysdate()简单用法
    round()和trunc()用法
    length() 用法
    replace 用法
    orcl 中upper()和lower()和initcap()的用法
    orcl 复杂查询
  • 原文地址:https://www.cnblogs.com/wangluojisuan/p/3388556.html
Copyright © 2011-2022 走看看