自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

EasyC++,運(yùn)算符重載限制

開發(fā) 后端
我們講了在類和結(jié)構(gòu)體當(dāng)中重載運(yùn)算符,關(guān)于運(yùn)算符的重載并不是隨心所欲的。C++給出了一些限制,從而保證了規(guī)范,以及程序運(yùn)行的準(zhǔn)確性。

[[440765]]

大家好,我是梁唐。

重載限制

上一篇我們講了在類和結(jié)構(gòu)體當(dāng)中重載運(yùn)算符,關(guān)于運(yùn)算符的重載并不是隨心所欲的。C++給出了一些限制,從而保證了規(guī)范,以及程序運(yùn)行的準(zhǔn)確性。

下面我們就來一一來看下:

必須至少有一個(gè)操作數(shù)是用戶定義的類型

這句話看不明白沒有關(guān)系,我們只需要記住它的目的就好了。它的主要目的是為了防止用戶為了標(biāo)準(zhǔn)類型重載運(yùn)算符。比如將+重載成兩個(gè)數(shù)的差,而不是和。

這種限制對(duì)創(chuàng)造性有一定的影響,沒有那么靈活,但可以保證程序的正常運(yùn)行。不會(huì)出現(xiàn)一些反人類的情況

不能違反運(yùn)算符原來的規(guī)則

這一點(diǎn)很好理解,比如+號(hào),它的運(yùn)算就是計(jì)算兩個(gè)數(shù)的和。需要有兩個(gè)操作數(shù),現(xiàn)在我們把它重載成一個(gè)操作數(shù),就是違法的。

  1. P p; 
  2. +p; 

同樣,我們也不能修改運(yùn)算符的優(yōu)先級(jí),如果將加號(hào)運(yùn)算符重載成兩個(gè)類相加,那么新的運(yùn)算符和原來的加號(hào)擁有一樣的優(yōu)先級(jí)。

不能創(chuàng)建新運(yùn)算符

這一點(diǎn)之前已經(jīng)說過了,比如不能定義operator @等這種原來沒有的運(yùn)算符。

禁止名單

有一些運(yùn)算符是禁止重載的,如:sizeof, ., ::, ?:, typeid, const_cast, dynamic_cast, reinterpret_cast, static_cast

這些運(yùn)算符往往都有特殊的功能,直接從實(shí)現(xiàn)層面禁止重載。

部分運(yùn)算符只能通過成員函數(shù)重載

大多數(shù)運(yùn)算符都可以通過成員函數(shù)以及非成員函數(shù)進(jìn)行重載,但也有部分例外,只能通過成員函數(shù)重載,如:

  • =:賦值運(yùn)算符
  • (): 函數(shù)調(diào)用運(yùn)算符
  • []: 下標(biāo)運(yùn)算符
  • ->: 箭頭符號(hào)

這里的非成員函數(shù)看起來有些費(fèi)解,之后我們會(huì)遇到,主要是指友元函數(shù)。

責(zé)任編輯:武曉燕 來源: Coder梁
相關(guān)推薦

2021-12-15 10:25:57

C++運(yùn)算符重載

2021-10-20 14:03:06

C++運(yùn)算符類型

2021-12-12 18:13:54

C++This指針

2021-12-29 20:31:40

C++多態(tài)指針

2021-12-09 10:56:50

函數(shù)C++原型

2021-11-26 00:03:20

C++編譯常量

2009-08-12 10:47:03

C#運(yùn)算符重載

2009-09-04 13:18:10

C#允許運(yùn)算符重載

2009-08-12 10:27:12

C#運(yùn)算符重載運(yùn)算符重載實(shí)例

2009-08-14 10:16:57

C#運(yùn)算符重載

2009-08-12 10:56:47

C#運(yùn)算符重載C#運(yùn)算符重載實(shí)例

2022-09-19 08:10:37

運(yùn)算符函數(shù)語言

2021-10-26 00:19:51

C++結(jié)構(gòu)體存儲(chǔ)

2021-12-08 10:43:09

C++實(shí)現(xiàn)

2021-12-10 10:45:36

C++函數(shù)Stock

2021-12-30 14:58:58

C++函數(shù)動(dòng)態(tài)

2021-11-27 11:50:09

C++靜態(tài)持續(xù)

2021-11-09 10:38:16

C++Const指針

2021-12-11 19:02:03

函數(shù)C++對(duì)象

2009-08-12 12:46:11

C#運(yùn)算符重載
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)