美文网首页
用c实现c++的class功能

用c实现c++的class功能

作者: 六十年目裁判长亚玛萨那度 | 来源:发表于2019-01-10 21:20 被阅读0次

c++ class功能 :

class Test {
    private :
    int i ;
    int j; 
    public : 
    Test (int v1 = 0, int v2 = 0) {
        i = v1;
        j = v2;
    }
    int getI () {
        return i;
    }
    int getJ () {
        return j;
    }
    int add(int value) {
        return i + j + value;
    }
    ~Test() {
        //没有申请空间啥都不用干
    }
};


利用c来实现:

head.h

#ifndef _HEAD_H
typedef void demo;
demo* demo_init(int i, int j); //模拟构造函数
int getI(demo *pthis);
int getJ(demo *pthis);
int add(demo *pthis, int value);
void free_demo(demo *pthis);
#define _HEAD_H
#endif

head.c

#include <stdlib.h>
#include "head.h"
typedef struct class_demo{
    int a;
    int b;
}class_demo;

demo* demo_init(int i, int j) {
    class_demo *p = (class_demo *)malloc(sizeof(class_demo));
    if (p != NULL) {
        p->a = i;
        p->b = j;
    }
    return p;
}

int getI(demo *pthis) {
    class_demo *p = (class_demo *) pthis;
    return p->a;
}

int getJ(demo *pthis) {
    class_demo *p = (class_demo *) pthis;
    return p->b;
}

int add(demo *pthis, int value) {
    class_demo *p = (class_demo *) pthis;
    return p->a + p->b + value;
}

void free_demo(demo *pthis) {
    free(pthis);
}

main.c

#include<stdio.h>
#include "head.h"

int main() {
    demo *p = demo_init(1, 2);
    printf("a = %d\n", getI(p));
    printf("b = %d\n", getJ(p));
    printf("add = %d\n", add(p, 5));
    return 0;
}

这样写有一个好处,可以理解c++ this指针的工作机制,在c中,pthis就是this指针,代表了函数的首地址。

相关文章

  • 用c实现c++的class功能

    c++ class功能 : 利用c来实现: head.h head.c main.c 这样写有一个好处,可以理解c...

  • 第二十一章 扩展

    c++没有extension语法,一般意义而言,c++完成扩展的功能通过继承和组合来实现。 class Base ...

  • 《解密java 虚拟机》笔记

    Hotspot 由 C++ 写成。 java编译为 class,jvm 将 class 文件解析,在 C++层用o...

  • C++类、对象

    一、类 类(Class)则是C++面向对象编程的实现方式。class是C++关键字,也是用于类声明的关键字。紧接c...

  • c++ 实现队列

    相关资料: 用C++实现一个队列 数据结构代码实现之队列的链表实现(C/C++)

  • 【Boolan】第五周笔记

    1.关于vptr和vtbl之前的学习已经了解到c++多态主要靠虚函数实现,如果说c++的class在实现上相比c的...

  • Linux 下C++ 定时器

    问题背景:Linux下用C++实现一个定时器。一、使用 setitimer 实现定时器功能: setitimer ...

  • 01-OC对象的本质

    OC是通过C/C++的什么数据结构实现我们的OC对象呢 结构体--OC对象的本质就是C/C++的结构体 Class...

  • android和so文件的关系

    最近测试京东阅读app,读书引擎这一块是用c++代码写的,上层调用引擎库实现特定功能。总是听底层(c++)开发人员...

  • Android JNI使用(Android Studio)

    java native interface (JNI)学习java和C/C++各有优缺点,有时用C/C++实现更好...

网友评论

      本文标题:用c实现c++的class功能

      本文链接:https://www.haomeiwen.com/subject/hlezrqtx.html