我以前只知道,在 C++ 中,如果要表示一个类是抽象基类,只要为它定义一个纯虚析构函数就可以了,没想到今天用到的时候才发现,连接的时候通不过,说没有找到那个函数的定义。到网上一搜才知道,原来纯虚函数也是可以有定义的啊。在实现文件中加上它的空定义之后,一切就 OK 了。
不过,因为我那个基类里面已经有了一个纯虚函数,所以貌似没必要把析构函数也定义成纯虚的。
PS. 在 C++ 里面要实现 AST 还真是一件麻烦的体力劳动,要写那么多类,每个类还得写那么一砣的样板代码。幸好不是那种长期运行的服务器程序,不需要太考虑 memory leak 的问题,就不用写析构函数和 delete
了(实际上是懒得写),不然样板代码还要更大砣。不知道有什么更好的方法没。