C++中的引用

ahe*_*ang 3 c++

有一次我在一份声明中读到了

"密封交易"以包含​​引用的语言功能是运算符重载.

为什么需要引用才能有效地支持运算符重载?有什么好解释吗?

Mic*_*urr 10

这是Stroustrup在"C++的设计和演变"(3.7"引用")中所说的:

引用的引用主要是为了支持运算符重载....

C按值传递每个函数参数,并且按值传递对象的效率低或不合适,用户可以传递指针.在使用运算符重载的情况下,此策略不起作用.在这种情况下,符号方便是必不可少的,因为如果对象很大,则不能期望用户插入地址运算符.例如:

 a = b - c;
Run Code Online (Sandbox Code Playgroud)

是可接受的(即常规的)符号,但是

 a = &b - &c;
Run Code Online (Sandbox Code Playgroud)

不是.无论如何,&b - &c在C中已经有了意义,我不想改变它.