24得票7回答
C++的多重继承是如何实现的?

单继承易于实现。例如,在C语言中,可以模拟继承:struct Base { int a; } struct Descendant { Base parent; int b; } 但是在多继承中,编译器必须将多个父类组合到新构造的类中。这是如何完成的? 我看到出现的问题是:父类应该按AB还是BA...

24得票4回答
为什么Python列表加法必须是同质的?

是否有了解Python内部(CPython或其他实现方式)的人能够解释为什么列表相加需要是同质的:In [1]: x = [1] In [2]: x+"foo" -----------------------------------------------------------------...

23得票2回答
C#中的foreach如何实现?

foreach 在 C# 中是如何实现的? 我想它的一部分看起来像这样:var enumerator = TInput.GetEnumerator(); while(enumerator.MoveNext()) { // do some stuff here } 不过我不确定到底发生了什么...

21得票6回答
Haskell编译器是如何工作的?

我想知道哪里可以获得一些关于Haskell编译器实际工作原理的纸质/文档等材料?我读了GHC的许多文档,但是在头痛之后就停下来了。因此,最好有些东西不需要博士学位才能理解,并且没有使用"你应该已经熟悉这个"风格的写作方式。如果它确实很长并需要花费一些时间来理解,那也没有问题。 附注:最有趣的...

21得票4回答
如何在C语言中实现C++虚函数

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

20得票2回答
Lisp在解析方面更擅长处理哪些内容?

我想以一种Lisp方言的形式实现一个Lisp解释器,主要是作为一种学习练习。但是我在这个领域面前感到有些迷茫,因为选择实在太多了。首先,我比较感兴趣的是学习一些已经存在一段时间的Lisp方言(比如Scheme或Common Lisp)。我不想使用Clojure来完成这个任务,纯粹是因为我已经用...

19得票9回答
Java.util.HashMap和HashSet的内部实现

我一直在尝试理解java.util.HashMap和java.util.HashSet的内部实现。 以下是我心中一直存在的疑问: @Override public int hashcode()在HashMap/HashSet中的重要性是什么?这个哈希码在内部使用的地方在哪里? 通常我看到...

18得票2回答
在Perl中如何实现数组?

Perl数组是一种抽象数据类型。那么Perl数组的内部机制是什么?它是使用动态数组还是链表实现的呢? 由于数组元素可以进行随机访问,我认为使用指针或者参考标量的动态数组会很合理。然而,在头部进行shift和unshift操作时,数组是否必须移动所有元素呢?这样做听起来效率不高。您有何想法?

16得票1回答
为什么绑定会影响我的地图类型?

我在 REPL 中尝试了一些操作,出现了一些奇怪的行为:Clojure 1.4.0 user=> (type {:a 1}) clojure.lang.PersistentArrayMap user=> (def x {:a 1}) #'user/x user=> (type...

15得票5回答
一个字符的整数值范围是否取决于实现?

我正在阅读《C++程序设计语言》这本书,Stroustrup 在里面提到 char 类型的 int 值可以从 0 到 255 或从 -127 到 127 取值,这是正确的吗?看起来应该是从-128到127才对。如果不是这样,为什么第二种实现只有 255 种可能的值,而不是256种?