C语言如何支持C++重载?
在知乎上看到的一个帖子,C语言如何支持C++重载?1.cpp是怎么支持重载的?2.你认为cpp编译器是用什么语言实现的?既然c语言不可以支持重载,那么c语言写的编译器是如何实现cpp的重载的呢?这里节选一些精彩的回复。
来源:知乎
1
所有图灵完备的编程语言都能编写C++编译器
C语言是图灵完备的编程语言
C语言能编写C++编译器
2
简单来讲,你可以理解为把void Fuck(int);
int Fuck(float, const string&);
的名字改成Fuck%shit0%int%bitch%void
Fuck%shit0%float%shit1%&<const<std::string>>%bitch%int
然后把代码里面对Fuck的引用按照编译出来的结果改成上面这两个,就相当于是C语言实现重载了。
3
3.那么问题来了,既然c语言不可以支持重载,那么c语言写的编译器是如何实现cpp的重载的呢?"答:什么问题来了,这和前面的问题毫无关系。基本上用什么语言都可以写一个cpp的编译器,实现cpp的重载。用basic、pascal、lua、php、js什么的都可以做cpp的编译器。如果不嫌麻烦,汇编也可以。本质上,编译器只是将输入的一串字符通过运算输出一串二进制数而已,能实现基本算法的语言都足以胜任。所谓重载,只是输出的那串二进制数中的具体格式罢了。
4
3.那么问题来了,既然c语言不可以支持重载,那么c语言写的编译器是如何实现cpp的重载的呢?"答:什么问题来了,这和前面的问题毫无关系。基本上用什么语言都可以写一个cpp的编译器,实现cpp的重载。用basic、pascal、lua、php、js什么的都可以做cpp的编译器。如果不嫌麻烦,汇编也可以。本质上,编译器只是将输入的一串字符通过运算输出一串二进制数而已,能实现基本算法的语言都足以胜任。所谓重载,只是输出的那串二进制数中的具体格式罢了。
最后,如果你想学C/C++可以加入编程QQ交流群:825414254获取素材资料以及开发工具和听课权限
C++资料.png