在引用上使用"operator&"是一个可移植的C++构造吗?

sha*_*oth 2 c++ pointers reference

假设我有:

void function1( Type* object ); //whatever implementation
void function2( Type& object )
{
    function1( &object );
}
Run Code Online (Sandbox Code Playgroud)

假设Type没有重载,operator &()这个构造 - operator &在引用上使用 - Type在所有符合标准的C++编译器上获取对象的实际地址(类型的变量)?

Joh*_*itb 6

是的,原因是在评估任何表达式的最开始时,引用被替换为引用的对象,如5[expr]/6标准中所定义.这将使它 - &操作员没有看到任何区别:

如果表达式最初具有"对T的引用"类型(8.3.2,8.5.3),则在进行任何进一步分析之前将类型调整为"T",表达式指定由引用表示的对象或函数,并且表达式是一个左值.

这使得任何操作表达式的操作符"透视"引用.