通过C ++ API

时间:2018-05-14 19:50:57

标签: c++ inheritance llvm

所以我试着写一个 OOP 语言的编译器,其语法与 Java 非常相似,而且我一直在想弄清楚继承是怎么回事实施。

我已经尝试过的是编写一个相当基本的 C ++ 继承示例,并使用clang -S ${FILES} -emit-llvm进行编译。

C ++代码如下:

a.hpp:

class A {

    protected:
        int a;

};

b.hpp:

#include "a.hpp"

class B : public A {

    private:
        int b;

    public:
        explicit B();

};

b.cpp:

#include "b.hpp"

B::B() : A() {}

main.cpp中:

#include "b.hpp"

int main() {

    B b;

}

但老实说,我确实发现输出确实令人困惑......

我发现谷歌搜索是为了处理虚拟方法和覆盖,我将不得不使用 vtables (并且知道我已经找到了this教程LLVM文档,但我觉得它没有用,是否有一种在LLVM中创建 vtables 的标准方法?

我对编译顺序也有一些疑问......

假设我有这个源代码:

package test;
class Test extends SuperTest {}

我很清楚,为了在分析Test时合并SuperTestTest的逻辑和数据结构,SuperTest必须已经编译,但是如何我是否安排编辑,以免出现这样的问题?

感谢您的关注。

0 个答案:

没有答案