Tag: 对象

人们使用什么技术/策略来构建C(而不是C ++)中的对象?

我特别感兴趣的是在C语言中使用的对象,而不是构成解释语言核心的对象的实现,例如python。

实验:面向对象的C?

可能重复: 你能用C编写面向对象的代码吗? 嗨! 只是为了它的乐趣,我在最后两天一直在尝试用纯C创建一个非常简单,非常简单的对象环境。我一直在玩宏,动态链接,类型描述结构等,我到达了以下内容: string_o str = new(String, “hello world”); list_o list = new(List); List.pushf(list, str); printf(“In the list: \”%s\”\n”, String.text(List.popf(list))); delete(list); delete(str); 看起来和工作有点好,但我无法找到伪造实例方法的方法。 我不能通过Class.function(instance) ,不能没有函数名的全局宏替换,这会破坏封装的目的。 同样,这是一个实验,只是为了挑战和乐趣=)。 你们能帮我找出办法吗? 我不想使用额外的预处理,只需要普通的C和GCC宏。 编辑>忘了说 – 我不希望每个实例在其结构中包含函数指针。 这会给我方法语法好,但这意味着一个4字节的数据对象会有十几个函数指针复制到每个实例。 这有点像作弊= P哈哈 提前致谢!

这个程序的Python内存模型

在http://pythontutor.com/上运行时,我的查询是关于存储值和函数的符号的以下程序。 我的问题是: 在开始解释python程序之前,python执行模型如何在内存上查找上面的程序? 我如何可视化内存布局? 例如,c可执行文件具有代码/堆栈/堆/额外/数据段,仅作为示例,我不进行比较 ‘const’是32/64位存储区的名称,存储值2,类型是否为整数? add()/ sub()/其他函数按照图表显示在Objects列中,那么,我如何感知函数存储为对象? 我如何想象它? 根据图表,op是一个指向函数sub()的函数指针吗?