在内存表的事务模块(\src\gausskernel\storage\mot\core\system\transaction\txn.h)中,可以看到常指针引用做函数参数,如下图所示 注意到红框框住的几个参数都是类似于 Type* const& 的形式。 我做了一个实验: #include <typeinfo> #include <stdio.h> typedef int Type, * TypePtr; typedef Type* const& Foo; typedef const TypePtr& Bar;
int main() { printf("%d\n", typeid(Foo) == typeid(Bar)); return 0; } 运行之后,程序输出了1。说明参数对应的就是实验程序中的Bar类型。我觉得,指针变量本来就是值,并不是类类型,再加一个&会导致出现间接寻址,加大开销。