Fed*_*zzi 5 c++ inheritance llvm
所以我试图用与Java非常相似的语法为OOP语言编写一个编译器,我一直在弄清楚如何实现继承。
我已经尝试过编写一个相当基本的C++继承示例并使用clang -S ${FILES} -emit-llvm.
C++ 代码如下:
a.hpp:
class A {
protected:
int a;
};
Run Code Online (Sandbox Code Playgroud)
b.hpp:
#include "a.hpp"
class B : public A {
private:
int b;
public:
explicit B();
};
Run Code Online (Sandbox Code Playgroud)
b.cpp:
#include "b.hpp"
B::B() : A() {}
Run Code Online (Sandbox Code Playgroud)
主.cpp:
#include "b.hpp"
int main() {
B b;
}
Run Code Online (Sandbox Code Playgroud)
但老实说,我发现输出确实令人困惑......
我发现谷歌搜索是为了处理虚拟方法和覆盖,我必须使用vtables(关于这一点,我知道我已经在文档中找到了这个教程,LLVM但我没有发现它真的很有帮助,有吗?在 LLVM中创建vtable的标准方法)?
我对编译顺序也有一些疑问......
假设我有这个源代码:
package test;
class Test extends SuperTest {}
Run Code Online (Sandbox Code Playgroud)
似乎很清楚,我认为,以合并的逻辑和数据结构Test,并SuperTest同时分析Test,SuperTest必须已编译的,但如何安排编译这样,像这样的问题不能出现?
谢谢关注。