99问答网
所有问题
c++重载运算符号
C++重载运算符号可以用除了标准的+-*/()这类以外的符号吗
举报该问题
推荐答案 æ¨èäº2016-08-03
ãã1.è¿ç®ç¬¦éè½½å®ä¹ï¼
ããC++ä¸é¢å®ä¹çè¿ç®ç¬¦çæä½å¯¹è±¡åªè½æ¯åºæ¬æ°æ®ç±»åãä½å®é ä¸ï¼å¯¹äºè®¸å¤ç¨æ·èªå®ä¹ç±»åï¼ä¾å¦ç±»ï¼ï¼ä¹éè¦ç±»ä¼¼çè¿ç®æä½ãè¿æ¶å°±å¿ é¡»å¨C++ä¸éæ°å®ä¹è¿äºè¿ç®ç¬¦ï¼èµäºå·²æè¿ç®ç¬¦æ°çåè½ï¼ä½¿å®è½å¤ç¨äºç¹å®ç±»åæ§è¡ç¹å®çæä½ãè¿ç®ç¬¦éè½½çå®è´¨æ¯å½æ°éè½½ï¼å®æä¾äºC++çå¯æ©å±æ§ï¼ä¹æ¯C++æå¸å¼äººçç¹æ§ä¹ä¸ã
ããè¿ç®ç¬¦éè½½æ¯éè¿å建è¿ç®ç¬¦å½æ°å®ç°çï¼è¿ç®ç¬¦å½æ°å®ä¹äºéè½½çè¿ç®ç¬¦å°è¦è¿è¡çæä½ãè¿ç®ç¬¦å½æ°çå®ä¹ä¸å ¶ä»å½æ°çå®ä¹ç±»ä¼¼ï¼æä¸çåºå«æ¯è¿ç®ç¬¦å½æ°çå½æ°åæ¯ç±å ³é®åoperatoråå ¶åè¦éè½½çè¿ç®ç¬¦ç¬¦å·ææçãè¿ç®ç¬¦å½æ°å®ä¹çä¸è¬æ ¼å¼å¦ä¸ï¼
ãã<è¿åç±»å说æ符> operator <è¿ç®ç¬¦ç¬¦å·>(<åæ°è¡¨>)
ãã{
ãã<å½æ°ä½>
ãã}
ãã2.è¿ç®ç¬¦éè½½æ¶è¦éµå¾ªä»¥ä¸è§åï¼
ãã(1) é¤äºç±»å±å ³ç³»è¿ç®ç¬¦"."ãæåæéè¿ç®ç¬¦".*"ãä½ç¨åè¿ç®ç¬¦"::"ãsizeofè¿ç®ç¬¦åä¸ç®è¿ç®ç¬¦"?:"以å¤ï¼C++ä¸çææè¿ç®ç¬¦é½å¯ä»¥éè½½ã
ãã(2) éè½½è¿ç®ç¬¦éå¶å¨C++è¯è¨ä¸å·²æçè¿ç®ç¬¦èå´å çå 许éè½½çè¿ç®ç¬¦ä¹ä¸ï¼ä¸è½å建æ°çè¿ç®ç¬¦ã
ãã(3) è¿ç®ç¬¦éè½½å®è´¨ä¸æ¯å½æ°éè½½ï¼å æ¤ç¼è¯ç¨åºå¯¹è¿ç®ç¬¦éè½½çéæ©ï¼éµå¾ªå½æ°éè½½çéæ©ååã
ãã(4) éè½½ä¹åçè¿ç®ç¬¦ä¸è½æ¹åè¿ç®ç¬¦çä¼å 级åç»åæ§ï¼ä¹ä¸è½æ¹åè¿ç®ç¬¦æä½æ°ç个æ°åè¯æ³ç»æã
ãã(5) è¿ç®ç¬¦éè½½ä¸è½æ¹å该è¿ç®ç¬¦ç¨äºå é¨ç±»å对象çå«ä¹ãå®åªè½åç¨æ·èªå®ä¹ç±»åç对象ä¸èµ·ä½¿ç¨ï¼æè ç¨äºç¨æ·èªå®ä¹ç±»åç对象åå é¨ç±»åç对象混å使ç¨æ¶ã
ãã(6) è¿ç®ç¬¦éè½½æ¯é对æ°ç±»åæ°æ®çå®é éè¦å¯¹åæè¿ç®ç¬¦è¿è¡çéå½çæ¹é ï¼éè½½çåè½åºå½ä¸åæåè½ç¸ç±»ä¼¼ï¼é¿å 没æç®çå°ä½¿ç¨éè½½è¿ç®ç¬¦ã
ããï¼7ï¼éè½½è¿ç®ç¬¦çå½æ°ä¸è½æé»è®¤çåæ°ï¼å¦åå°±æ¹åäºè¿ç®ç¬¦çåæ°ä¸ªæ°ï¼ä¸åé¢ç¬¬3ç¹ç¸çç¾äºï¼
ããï¼8ï¼éè½½çè¿ç®ç¬¦åªè½æ¯ç¨æ·èªå®ä¹ç±»åï¼å¦åå°±ä¸æ¯éè½½èæ¯æ¹åäºç°æçC++æ åæ°æ®ç±»åçè¿ç®ç¬¦çè§åäºï¼ä¼å¼ä¼å¤©ä¸å¤§ä¹±çï¼
ããï¼9ï¼ç¨æ·èªå®ä¹ç±»çè¿ç®ç¬¦ä¸è¬é½å¿ é¡»éè½½åæ¹å¯ä½¿ç¨ï¼ä½ä¸¤ä¸ªä¾å¤ï¼è¿ç®ç¬¦â=âåâ&âä¸å¿ ç¨æ·éè½½ï¼
ããï¼10ï¼è¿ç®ç¬¦éè½½å¯ä»¥éè¿æåå½æ°çå½¢å¼ï¼ä¹å¯æ¯éè¿åå å½æ°ï¼éæåéåå çæ®éå½æ°ã
ãã
ãã3.è¿ç®ç¬¦éè½½çå½¢å¼ï¼
ããè¿ç®ç¬¦å½æ°éè½½ä¸è¬æ两ç§å½¢å¼ï¼é载为类çæåå½æ°åé载为类çéæåå½æ°ãéæåå½æ°é常æ¯åå ãï¼å¯ä»¥æä¸ä¸ªè¿ç®ç¬¦ä½ä¸ºä¸ä¸ªéæåãéåå å½æ°éè½½ãä½æ¯ï¼è¿æ ·çè¿ç®ç¬¦å½æ°è®¿é®ç±»çç§æåä¿æ¤æåæ¶ï¼å¿ 须使ç¨ç±»çå ¬ææ¥å£ä¸æä¾ç设置æ°æ®å读åæ°æ®çå½æ°ï¼è°ç¨è¿äºå½æ°æ¶ä¼éä½æ§è½ãå¯ä»¥å èè¿äºå½æ°ä»¥æé«æ§è½ãï¼
ãã1ï¼ æåå½æ°è¿ç®ç¬¦
ããè¿ç®ç¬¦é载为类çæåå½æ°çä¸è¬æ ¼å¼ä¸ºï¼
ãã<å½æ°ç±»å> operator <è¿ç®ç¬¦>(<åæ°è¡¨>)
ãã{
ãã<å½æ°ä½>
ãã}
ããå½è¿ç®ç¬¦é载为类çæåå½æ°æ¶ï¼å½æ°çåæ°ä¸ªæ°æ¯åæ¥çæä½æ°è¦å°ä¸ä¸ªï¼åç½®åç®è¿ç®ç¬¦é¤å¤ï¼ï¼è¿æ¯å 为æåå½æ°ç¨thisæééå¼å°è®¿é®äºç±»çä¸ä¸ªå¯¹è±¡ï¼å®å å½äºè¿ç®ç¬¦å½æ°æ左边çæä½æ°ãå æ¤ï¼
ãã(1) åç®è¿ç®ç¬¦é载为类çæåå½æ°æ¶ï¼å½æ°åªæ¾å¼è¯´æä¸ä¸ªåæ°ï¼è¯¥å½¢åæ¯è¿ç®ç¬¦çå³æä½æ°ã
ãã(2) åç½®åç®è¿ç®ç¬¦é载为类çæåå½æ°æ¶ï¼ä¸éè¦æ¾å¼è¯´æåæ°ï¼å³å½æ°æ²¡æå½¢åã
ãã(3) åç½®åç®è¿ç®ç¬¦é载为类çæåå½æ°æ¶ï¼å½æ°è¦å¸¦æä¸ä¸ªæ´åå½¢åã
ããè°ç¨æåå½æ°è¿ç®ç¬¦çæ ¼å¼å¦ä¸ï¼
ãã<对象å>.operator <è¿ç®ç¬¦>(<åæ°>)
ããå®çä»·äº
ãã<对象å><è¿ç®ç¬¦><åæ°>
ããä¾å¦ï¼a+bçä»·äºa.operator +(b)ãä¸è¬æ åµä¸ï¼æ们éç¨è¿ç®ç¬¦çä¹ æ¯è¡¨è¾¾æ¹å¼ã
ãã2ï¼ åå å½æ°è¿ç®ç¬¦
ããè¿ç®ç¬¦é载为类çåå å½æ°çä¸è¬æ ¼å¼ä¸ºï¼
ããfriend <å½æ°ç±»å> operator <è¿ç®ç¬¦>(<åæ°è¡¨>)
ãã{
ãã<å½æ°ä½>
ãã}
ããå½è¿ç®ç¬¦é载为类çåå å½æ°æ¶ï¼ç±äºæ²¡æéå«çthisæéï¼å æ¤æä½æ°ç个æ°æ²¡æååï¼ææçæä½æ°é½å¿ é¡»éè¿å½æ°çå½¢åè¿è¡ä¼ éï¼å½æ°çåæ°ä¸æä½æ°èªå·¦è³å³ä¸ä¸å¯¹åºã
ããè°ç¨åå å½æ°è¿ç®ç¬¦çæ ¼å¼å¦ä¸ï¼
ããoperator <è¿ç®ç¬¦>(<åæ°1>,<åæ°2>)
ããå®çä»·äº
ãã<åæ°1><è¿ç®ç¬¦><åæ°2>
ããä¾å¦ï¼a+bçä»·äºoperator +(a,b)ã
ãã4.两ç§é载形å¼çæ¯è¾
ããå¨å¤æ°æ åµä¸ï¼å°è¿ç®ç¬¦é载为类çæåå½æ°åç±»çåå å½æ°é½æ¯å¯ä»¥çãä½æåå½æ°è¿ç®ç¬¦ä¸åå å½æ°è¿ç®ç¬¦ä¹å ·æåèªçä¸äºç¹ç¹ï¼
ãã(1) ä¸è¬æ åµä¸ï¼åç®è¿ç®ç¬¦æ好é载为类çæåå½æ°ï¼åç®è¿ç®ç¬¦åæ好é载为类çåå å½æ°ã
ãã(2) 以ä¸ä¸äºåç®è¿ç®ç¬¦ä¸è½é载为类çåå å½æ°ï¼=ã()ã[]ã->ã
ãã(3) ç±»å转æ¢å½æ°åªè½å®ä¹ä¸ºä¸ä¸ªç±»çæåå½æ°èä¸è½å®ä¹ä¸ºç±»çåå å½æ°ã
ãã(4) è¥ä¸ä¸ªè¿ç®ç¬¦çæä½éè¦ä¿®æ¹å¯¹è±¡çç¶æï¼éæ©é载为æåå½æ°è¾å¥½ã
ãã(5) è¥è¿ç®ç¬¦æéçæä½æ°ï¼å°¤å ¶æ¯ç¬¬ä¸ä¸ªæä½æ°ï¼å¸ææéå¼ç±»å转æ¢ï¼ååªè½éç¨åå å½æ°ã
ãã(6) å½è¿ç®ç¬¦å½æ°æ¯ä¸ä¸ªæåå½æ°æ¶ï¼æ左边çæä½æ°ï¼æè åªææ左边çæä½æ°ï¼å¿ é¡»æ¯è¿ç®ç¬¦ç±»çä¸ä¸ªç±»å¯¹è±¡ï¼æè æ¯å¯¹è¯¥ç±»å¯¹è±¡çå¼ç¨ï¼ãå¦æ左边çæä½æ°å¿ é¡»æ¯ä¸ä¸ªä¸åç±»ç对象ï¼æè æ¯ä¸ä¸ªå é¨ç±»åç对象ï¼è¯¥è¿ç®ç¬¦å½æ°å¿ é¡»ä½ä¸ºä¸ä¸ªåå å½æ°æ¥å®ç°ã
ãã(7) å½éè¦éè½½è¿ç®ç¬¦å ·æå¯äº¤æ¢æ§æ¶ï¼éæ©é载为åå å½æ°ã
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://99.wendadaohang.com/zd/zBXje7etW.html
其他回答
第1个回答 推荐于2016-05-08
可以啊,你应该问 C++ 不能重载那些运算符号,其实C++几乎可以重载 所有的运算符。
不能重载的运算符只有 4 个,作用域运算符: '::',
成员解引用运算符: '.*',
成员访问运算符: '.',
条件运算符: '?:'
除以上4个运算符外,还有一些运算符重载 语法没有错误,但并不适合重载,比如 短路求值 运算符 逻辑与 && ,逻辑或 || 等等,深入学习 C++后自然会知道。
本回答被提问者和网友采纳
第2个回答 2011-12-23
只要是运算符都可以的,比如++,——
重载的好处就是按照自己的意愿让运算符工作
第3个回答 2011-12-23
不能重载的操作符:sizeof/./.*/::/?:/typeid/const_cast/dynamic_cast/reinterpret_cast/static_cast
除了以上列出,其他操作符都可以。
第4个回答 2011-12-23
%^[]
相似回答
大家正在搜
相关问题
c++的所有运算符都可以重载吗
C++如何重载加法运算符?
c++如何对运算符号重载?
c++的所有运算符都可以重载吗?
C++中不能重载的运算符,有哪几个?谢谢
C++重载++运算符的问题.
c++重载输出运算符问题
c++,运算符重载函数后加const