gpt4 book ai didi

c++ - 使用抽象来制作翻译器

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:46:57 24 4
gpt4 key购买 nike

给定

class Allocator {
public:
virtual char *allocate(unsigned int size)=0;
// EFF: allocates a character buffer of size characters
virtual void dispose(char *buf)=0;
// REQ: buf was allocated by this allocator
// EFF: release memory previously allocated.
};
class Translator {
public:
virtual char *operator()(const char *s, Allocator &a) = 0;
// EFF: returns a translation of the C-string s as
// another C-string, where the translation
// C-string is allocated by a.
};

假设您要实现以下内容:

void printTranslatedArgs(int argc, char *argv[], 
Translator &t, Allocator &a);
// REQ: argc/argv are in the form of program arguments
// EFF: prints the translated command line.

我很难理解这是如何工作的,因为分配、处置和运算符是纯虚拟的,所以它们各自的类实际上并没有定义这些函数。

最佳答案

引用支持多态性。这意味着使用函数 printTranslatedArgs 的任何人都需要使用实现所有虚函数的 TranslatorAllocator 的基类来调用它。你不需要理会函数内部的具体类类型,调用它们就好像它们是任何其他成员函数一样,例如:

char *p = a.allocate(5);

关于c++ - 使用抽象来制作翻译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13874533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com