相关疑难解决方法(0)

你能用C编写面向对象的代码吗?

你能用C编写面向对象的代码吗?特别是关于多态性.


另请参阅堆栈溢出问题C中的面向对象问题.

c oop object

481
推荐指数
19
解决办法
28万
查看次数

C语言中的面向对象编程

可能重复:
你能用C编写面向对象的代码吗?
C中的面向对象模式?

我记得刚才读到有人(我认为是Linus Torvalds)谈论C++是一种可怕的语言,以及如何用C编写面向对象的程序.在有时间反思的时候,我真的不知道如何所有面向对象的概念都延续到了C.有些事情是相当明显的.例如:

  1. 要模拟成员函数,可以将函数指针放在结构中.
  2. 要模拟多态性,你可以编写一个函数,它接受可变数量的参数并根据sizeof参数(例如参数)执行一些voodoo

你会如何模仿封装和继承?

我想通过使用存储私有成员的嵌套结构可以模拟封装.它可以相当容易地出现,但也许可以被命名PRIVATE或者同样明显的东西,以表明它不应该从结构外部使用.那继承怎么样?

c oop

54
推荐指数
5
解决办法
3万
查看次数

如何在C中实现C++虚函数

C++语言提供了virtual函数.在纯C语言实现的约束下,如何实现类似的效果?

c c++ language-implementation

18
推荐指数
1
解决办法
1万
查看次数

你如何用非OO语言进行继承?

我读到早期的C++"编译器"实际上将C++代码翻译成C并在后端使用了C编译器,这让我很奇怪.我已经掌握了足够的技术知识来解决大部分工作原理,但我无法弄清楚如何在没有语言支持的情况下进行类继承.

具体来说,如何定义一个包含几个字段的类,然后是一堆继承自它的子类,每个子类都添加自己的新字段,并能够作为函数参数交替传递它们?特别是当C++允许你在堆栈上分配对象时,你怎么能这样做呢?所以你甚至可能没有指向隐藏的指针?

注意:我得到的前几个答案是关于多态性的.我知道关于多态和虚方法的一切.我甚至曾经做过一次关于Delphi中虚拟方法表如何工作的低级细节的会议演示.我想知道的是类继承和字段,而不是多态.

c c++ oop inheritance history

2
推荐指数
2
解决办法
400
查看次数

C 怎么不是面向对象的?

可能的重复:
你能用 C 编写面向对象的代码吗?
C中的面向对象编程

所以,据我所知,“对象”基本上只是值和方法的包装器。你不能在 C 中使用structs拥有相同的功能吗?Astruct看起来就像一个简单的class,但是,当然,它没有任何方法。在这里,我们触及了我的问题的核心:我根本不明白为什么需要方法。如果我们有一个只接受指向 a 实例的指针的外部函数,岂不是更简单、更节省内存struct?或者甚至让structs 指向这些函数,但这似乎纯粹是美学......

c architecture oop struct class

1
推荐指数
1
解决办法
2986
查看次数