提问c++代码语义语法问题

img
已知Environment是一个独立的类,那么请问
device virtual ParaCellsObject *proliferate(Environment *env)=0;
这句话是在干什么?
求助,这是本菜鸟接的一个小的项目,这句话对于理解整个工程结构非常重要,不知道这是什么语法,在做什么。

看起来是CUDA语法。.cuh是CUDA的头文件后缀,ParaCellsObject揭示了这是一个并行程序,device是CUDA的一个关键字。这个程序需要运行在合理安装了NVIDIA闭源驱动的机器上(当然你的硬件也得有NVIDIA的相应显卡,而且显卡版本和驱动版本和CUDA驱动版本得匹配。顺带一提,驱动、CUDA驱动、CUDNN是三个不同的东西,需要先安装NVIDIA闭源驱动再安装CUDA驱动,CUDNN的话,我没装过,不清楚)。
virtual xxx(xxx) = 0;是声明纯虚函数的语法,相当于java的抽象方法。
不要听信其他回答的“__device__virtual是一个整体”的想法,这个东西就是CUDA的关键字,__device__指示这段代码运行在显卡上,__host__指定的是运行在主机(CPU)上的。virtual则是C++关键字,指示这个函数是虚函数。

_device_virtual ParaCellsObject *proliferate(Environment *env)=0;说明是一个纯虚函数。子类继承该父类时,必须实现这个函数。

是_device_virtual,不是_device virtual,这是一个单词,应该是个宏定义吧,要看一看具体怎么定义的
后面就是一个抽象类的抽象函数申明了,只有函数申明,没有函数体,直接=0就是抽象方法了
抽象类啥也没干,只定义了一个框架,具体这个函数干啥,要看子类的函数实现