在内存表的事务模块(\\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类型。我觉得,指针变量本来就是值,并不是类类型,再加一个&会导致出现间接寻址,加大开销。