运算符重载

赋值运算符“ =”只能重载为成员函数。

在C++中,赋值运算符“=”确实只能被重载为类的成员函数,而不能被重载为类的友元函数或全局函数。这是因为赋值运算符需要直接访问类的私有和受保护成员,以便能够正确地执行赋值操作

以下是只能重载为成员函数的运算符列表:

  1. 赋值运算符 (=)
  2. 下标运算符 ([])
  3. 函数调用运算符 (())
  4. 成员访问运算符 (->)

 

 重载运算符()、[]、->或者=赋值运算符,运算符重载函数必须声明为类的成员函数。

是的,运算符重载函数通常必须声明为类的成员函数,特别是当它们需要访问类的私有成员时 

在C++中,不能重载的运算符主要包括以下几类:

  1. 成员访问运算符.):这个运算符用于访问对象的成员,如果允许重载,可能会导致运算符意义的混淆,因为无法保证是调用对象的成员函数还是其他操作。
  2. 成员指针访问运算符->*.*):这些运算符用于通过指针访问对象的成员,如果允许重载,同样会导致运算符意义的混淆。
  3. 域运算符::):这个运算符用于指定类或命名空间的成员,如果允许重载,可能会在编译时引入混淆,因为该运算符主要用于编译时的域解析。
  4. 长度运算符sizeof):这个运算符用于获取对象或类型的大小,如果允许重载,可能会影响到内部许多依赖sizeof的指针操作。
  5. 三目运算符?:):这个运算符用于条件表达式,如果允许重载,可能会破坏其原有的跳转性质,即无法保证执行一个还是两个表达式,或者都没执行。

这些运算符之所以不能被重载,主要是因为它们在C++语言中有固定的语义和用途,重载后可能会导致运算符意义的混淆或破坏语言的原有设计。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值