1.不能被重载的运算符有五个,分别是 . .* :: ?: sizeof
有两个运算符系统提供默认重载版本:
(1.)赋值运算符“=”,系统默认重载为对象数据成员的复制。
(2.)地址运算符“&”,系统默认重载为返回任何类对象的地址。
2.运算符函数可以重载为成员函数,友元函数和普通函数。使用非成员,非友元的普通函数重载访问private,protect数据成员时,必须通过public接口提供的函数实现,增加程序开销。所以重载运算符用成员函数或友元函数。他们的关键区别在于,成员函数有this指针,而友元函数没有this指针。
(1.) 一元运算符(无论前置还是后置,都要求有一个操作数)
Object op 或 op Object
<1> 当重载为成员函数,编译器解析为:
Object.operator op()
操作数由对象Object通过this指针隐含传递,所以参数表为空。
<2>当重载为友元函数时,编译器解析为:
operator op(Object)
函数operator op所需的操作数由参数表Object提供。
(2.)二元运算符(要求有左、右操作数)
ObjectL op ObjectR
<1>当重载为成员函数,编译器解析为:
ObjectL.operator op (ObjectR)
左操作数ObjectL通过this指针传递,右操作数由参数ObjectR传递。
<2>重载为
详谈C++ 重载运算符中友元函数和成员函数
最新推荐文章于 2023-10-18 19:46:32 发布