Top Banner
&RS\ULJKW &*RWVPDQ <0.LPFKL &RPSXWHU6FLHQFH’HSW7HFKQLRQ ‡§ ` § 2SHUDWRU2YHUORDGLQJ 2SHUDWRU2YHUORDGLQJ 3DJH &KDSWHU 7KH&3URJUDPPLQJ/DQJXDJH 2SHUDWRU2YHUORDGLQJ 2SHUDWRU2YHUORDGLQJ +DYLQJ GHILQHGWKHFODVV &RPSOH[ ZHZDQWWREHDEOHWRDGGWZRFRPSOH[QXPEHUV ’HILQLQJDVWDQGDUGIXQFWLRQ ZRXOGPDNHWKHFRGHKDUGHUWRUHDG ,IRQO\ZHKDGDVDIXQFWLRQ ZHFRXOGKDYHRYHUORDGHGLW &RPSOH[]]] ]]]6\QWD[HUURU 7KHFRPSLOHUNQRZV WKDWLWGRHVQRWNQRZ KRZWRDGGFRPSOH[QXPEHUV [\$GGWZR GRXEOHV DGG]]$GGWZR&RPSOH[HV <HVRSHUDWRULVDIXQFWLRQ RSHUDWRU7KHQDPHRIWKHIXQFWLRQ
21

Operator Overloading - CS Technion

Feb 28, 2023

Download

Documents

Khang Minh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH��

E(J,Q6O,G(

���

&KDSWHU��

7KH�&���3URJUDPPLQJ�/DQJXDJH

2SHUDWRU�2YHUORDGLQJ

E(J,Q6O,G(

���

2SHUDWRU�2YHUORDGLQJ

+DYLQJ GHILQHG�WKH�FODVV &RPSOH[�

ZH�ZDQW�WR�EH�DEOH�WR�DGG�WZR�FRPSOH[�QXPEHUV�

'HILQLQJ�D�VWDQGDUG�IXQFWLRQ

ZRXOG�PDNH�WKH�FRGH�KDUGHU�WR�UHDG�

,I�RQO\�ZH�KDG�����DV�D�IXQFWLRQ

ZH�FRXOG�KDYH�RYHUORDGHG�LW�

&RPSOH[�]��������]��������]��

]�� �]����]�������6\QWD[�HUURU

7KH�FRPSLOHU�NQRZVWKDW�LW�GRHV�QRW�NQRZ

KRZ�WR�DGG�FRPSOH[�QXPEHUV

[���\��������$GG�WZR GRXEOHV

DGG�]��]�������$GG�WZR���&RPSOH[HV

���<HV���RSHUDWRU������LV�D�IXQFWLRQ�

RSHUDWRU�������7KH�QDPH�RI�WKH�IXQFWLRQ

Page 2: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH��

E(J,Q6O,G(

���

2SHUDWRU�2YHUORDGLQJ$OPRVW�DOO�VWDQGDUG�&�� RSHUDWRUV�FDQ�EH�RYHUORDGHG�IRU�FODVVHV��DQG�VWUXFWXUHV��E\�GHILQLQJ�IXQFWLRQV�RI�WKH�IRUP�RSHUDWRU 23��ZKHUH��23 LV�RQH�RI�WKH�SUHGHILQHG�&�� RSHUDWRUV�+HUH�LV�WKH�ILUVW�YHUVLRQ�RI��RSHUDWRU������������������������������LPSOHPHQWHG�DV�D�PHPEHU�IXQFWLRQ�

FODVV &RPSOH[�^SXEOLF�

&RPSOH[�GRXEOH U� ����GRXEOH L� �����UHDO�U���LPDJ�L��^`

&RPSOH[�RSHUDWRU ��FRQVW &RPSOH[��FRQVW��SULYDWH�

GRXEOH UHDO�LPDJ�`�

&RPSOH[�&RPSOH[��RSHUDWRU ��FRQVW &RPSOH[�]��FRQVW^�UHWXUQ &RPSOH[�UHDO ��]�UHDO��LPDJ ��]�LPDJ��`

RSHUDWRU�GRHV�QRW�PRGLI\LWV�DUJXPHQWV

E(J,Q6O,G(

���

8VLQJ�2YHUULGHQ 2SHUDWRUV

/HW��]���]� DQG�]� EH�&RPSOH[�

&RPSOH[�]��������]���������]��

WKHQ�WKH�&���FRGH�

]�� �]��� ]��

DFWXDOO\�FDOOV�WZR�RSHUDWRU�IXQFWLRQV�

]��RSHUDWRU ��]��RSHUDWRU��]����ZKHUH�WKH�IXQFWLRQ��RSHUDWRU �� LV������SUHGHILQHG E\�WKH�FRPSLOHU�

Page 3: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH��

E(J,Q6O,G(

���

3UH�'HILQHG�2SHUDWRUV

� 7KH�RQO\�RSHUDWRUV�GHILQHG�E\�GHIDXOW�IRU�DOO�FODVVHV�DUH�� $GGUHVV�RI� RSHUDWRU �XQDU\�

� $VVLJQPHQW� RSHUDWRU �ELQDU\�

� $OORZV�DVVLJQPHQW�RI�RQH�REMHFW�RI�WKH�FODVV�WR�DQRWKHU�

� 0HPEHUZLVH �UHFXUVLYH��FRS\�DVVLJQPHQW� 6HTXHQFLQJ� RSHUDWRU� �ELQDU\�

� (YHQ�WKHVH�DUH�MXVW�D�UHVXOW�RI�D�³+LVWRULFDO�$FFLGHQW´�FRPSDWLELOLW\�ZLWK�&��

E(J,Q6O,G(

���

%DVLF�5XOHV�RI�2SHUDWRU�2YHUORDGLQJ

� 7KH�RYHUORDGHG�LQVWDQFH�RI�DQ�RSHUDWRU�PXVW�FRQWDLQ�DW�OHDVW�RQH�DUJXPHQW�RI�D�FODVV�W\SH�� 2WKHUZLVH�RWKHU�YHUVLRQV�RI�WKH�RSHUDWRU�PD\�EH�LQYRNHG�

� 2QO\�WKH�SUHGHILQHG�RSHUDWRUV�PD\�EH�RYHUORDGHG�

� 7KH�SUHGHILQHG�SUHFHGHQFH�DQG DVVRFLDWLYLW\GLUHFWLRQ�RI�DQ\�RSHUDWRU�FDQQRW�EH�FKDQJHG�

� 7KH�XQDU\�ELQDU\ QDWXUH�RI�WKH�RSHUDWRUFDQQRW�EH�FKDQJHG�

� &DQQRW�EH�RYHUORDGHG��������������������������������������������� ��������� ��"���VL]HRI

Page 4: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH��

E(J,Q6O,G(

���

7KH�5DWLRQDO�1XPEHU�&ODVV

FODVV 5DWLRQDO�^SXEOLF�

5DWLRQDO�LQW WRS� ����LQW ERWWRP� ����W�WRS���E�ERWWRP��^�QRUPDOL]H���`

������SULYDWH�LQW W�E�YRLG QRUPDOL]H������$�SULYDWH�PHPEHU�IXQFWLRQ�^���LI �E������^�

E� ��E�W� ��W�

`

LQW GLYLVRU� �JFG�DEV�W��E��W�� �GLYLVRU�E�� �GLYLVRU�

``�

JFG�� LV�GHILQHG�HOVHZKHUH

E(J,Q6O,G(

���

$�8QDU\�2SHUDWRU�0HPEHUFODVV 5DWLRQDO�^

�����

SXEOLF������

5DWLRQDO�RSHUDWRU ����FRQVW^�UHWXUQ 5DWLRQDO��W�E��`

�����

`�

5DWLRQDO�U�������

5DWLRQDO�V ��U�������$FWLYDWHV U�RSHUDWRU���

7KH KLGGHQ DUJXPHQW�LV�FRQVW7KH KLGGHQ DUJXPHQW�LV�FRQVW

Page 5: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH��

E(J,Q6O,G(

���

$ULWKPHWLF�2SHUDWRU�0HPEHUV

FODVV 5DWLRQDO�^�������

SXEOLF��������5DWLRQDO�RSHUDWRU ��FRQVW 5DWLRQDO�U��FRQVW

^�UHWXUQ 5DWLRQDO�W U�E�U�W E��E U�E���`5DWLRQDO�RSHUDWRU ��FRQVW 5DWLRQDO�U��FRQVW

^�UHWXUQ 5DWLRQDO�W U�E�U�W E��E U�E���`5DWLRQDO�RSHUDWRU �FRQVW 5DWLRQDO�U��FRQVW

^�UHWXUQ 5DWLRQDO�W U�W��E U�E���`5DWLRQDO�RSHUDWRU ��FRQVW 5DWLRQDO�U��FRQVW

^�UHWXUQ 5DWLRQDO�W U�E��E U�W���``���1RWH�WKDW 5DWLRQDO���FDOOV 5DWLRQDO��QRUPDOL]H��

`�

E(J,Q6O,G(

���

7\SH�&RQYHUVLRQ�YLD�&RQVWUXFWRUV

,Q�RXU�H[DPSOH��WKH�5DWLRQDO FRQVWUXFWRU�SURYLGHV�FRQYHUVLRQ�IURP�LQW WR�5DWLRQDO��WKXV�ZH�FDQ�ZULWH��

5DWLRQDO�U��U�������U�������

���

U� �U����U�������6DPH�DV U��RSHUDWRU��U�����

U� �U��� ��������6DPH�DV U��RSHUDWRU��5DWLRQDO��������

U� �U�� �µD¶�����6DPH�DV U��RSHUDWRU �5DWLRQDO�LQW�µD¶������

���$QG�HYHQ�

U� �U�� ���������6DPH�DV U��RSHUDWRU �5DWLRQDO�LQW��������

$�&WRU ZLWK�D�VLQJOH�DUJXPHQWDFWV�DV�D�FRQYHUVLRQ�RSHUDWRU

Page 6: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH��

E(J,Q6O,G(

���

6\PPHWULF�2SHUDWRUV

5DWLRQDO�U��U�������U����������

:H�DUH�QRW�LQWHUHVWHG�LQ�PRQVWHUV�OLNH���� �U��

(YHQ�DQ� LQW RQ�WKH�OHIW�LV�XQUHDVRQDEOHL�� �U�����RSHUDWRU� VKRXOG�QRW�EH�V\PPHWULF���%XW�LW�LV�UHDOO\�UHTXLUHG�WR�KDYH����U� ������� �U�������� ��HWF��VKRXOG�EH�V\PPHWULF���

E(J,Q6O,G(

���

6\PPHWULF�2SHUDWRUV

8QIRUWXQDWHO\��WKH�DERYH�ZLOO�QRW�ZRUN��VLQFH�WKH�REMHFWZKLFK�LV�WKH�UHFHLYHU�RI�WKH�PHVVDJH��PXVW�DSSHDU�ILUVW�

6LQFH��WKLV LV�QHYHU�FRQYHUWHG�IURP�RQH�W\SH�WR�DQRWKHU��ZH�QHHG�D�IXQFWLRQ�WKDW�KDV�QR�LPSOLFLW�SDUDPHWHU�

7KH�VLPSOHVW�VROXWLRQ LV�WR�GHILQH�D�IXQFWLRQ�WKDW�LV����������QRW�D�PHPEHU�IXQFWLRQ �RI�DQ\�FODVV��

$ODV��WKLV�QRQ�PHPEHU�IXQFWLRQ��������������������������������������PD\�QHHG�DFFHVV�WR��SULYDWH PHPEHUV�RI�WKH�REMHFWV�

�� �U�����,V�HTXLYDOHQW�WR ��RSHUDWRU �U� :LOO�WU\�WR�DFWLYDWHD�PHPEHU�IXQFWLRQRI��³FODVV´ LQW

Page 7: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH��

E(J,Q6O,G(

���

)ULHQGV

� $�IXQFWLRQ I RU�FODVV $PD\�EH�GHILQHG�WR�EHD�IULHQG RI�FODVV�%�

� 7KLV�DOORZV�DFFHVV E\�IRU�E\�DOO�PHWKRGV�RI�$WR�SULYDWH ILHOGV�RI�%�

� % GHFODUHV�LWV�IULHQGV�

� 8VHIXO�IRU�HIILFLHQF\�

FODVV $�^�������`�

FODVV %�

LQW I�GRXEOH��^�%�E��������SULQWI�³�G?Q´�E�[���`��

FODVV &�^

SXEOLF����YRLG J�LQW��������

`�

FODVV %�^

IULHQG $�

IULHQG LQW I�GRXEOH��IULHQG YRLG &��J�LQW��

SULYDWH��LQW [�

SXEOLF��������`�

'R�QRW�FRPSLOH����

E(J,Q6O,G(

���

$ULWKPHWLF�2SHUDWRUV��)ULHQGV2SHUDWRUV�FDQ�EH�GHILQHG�DV�PHPEHU�RU�QRQ�PHPEHU�IXQFWLRQV��/HW¶V�WU\�WKH�QRQ�PHPEHU�YHUVLRQ�

FODVV 5DWLRQDO�^SXEOLF�

�������IULHQG 5DWLRQDO�RSHUDWRU �FRQVW 5DWLRQDO�U���FRQVW 5DWLRQDO�U��

^ UHWXUQ 5DWLRQDO�U��W U��W�U��E U��E���`IULHQG 5DWLRQDO�RSHUDWRU��FRQVW 5DWLRQDO�U���FRQVW 5DWLRQDO�U���

^�UHWXUQ 5DWLRQDO�U��W U��E�U��E U��W���`�������

SULYDWH��������

`�

WKH�IXQFWLRQV�DUH�DOVR LQOLQH

Page 8: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH��

E(J,Q6O,G(

���

8VLQJ�$ULWKPHWLFDO�2SHUDWRUV

1RZ�ZH�FDQ�ZULWH�

���LQW L����U� �L������ �U������

:LWK�WKH�FRPSLOHU�GRLQJ�WKH�QHFHVVDU\�FRQYHUVLRQV�WR�W\SH�5DWLRQDO�

E(J,Q6O,G(

���

$�)ULHQG�8QDU\�2SHUDWRU

FODVV 5DWLRQDO�^SXEOLF������IULHQG 5DWLRQDO�RSHUDWRU ��FRQVW�5DWLRQDO�Y�^�

UHWXUQ 5DWLRQDO��Y�W�Y�E��`

�����`����5DWLRQDO�U�������5DWLRQDO�V� ��U�

$�PHPEHU�LV�SUHIHUUHG

Page 9: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH��

E(J,Q6O,G(

���

7KLV

:LWKLQ�DQ\�PHPEHU��IXQFWLRQ�GHILQLWLRQ��WKLVLV�D�SRLQWHU�WR�WKH�REMHFW�

WKLV LV�WKH�RQO\�ZD\WR�H[SOLFLWO\�FDOO�WKH�REMHFW�

FODVV &RPSOH[�^

GRXEOH UHDO�LPDJ�

SXEOLF�GRXEOH UHDOBSDUW���FRQVW^�UHWXUQ WKLV�!UHDO��`

��������

`�

E(J,Q6O,G(

���

2YHUORDGLQJ�$VVLJQPHQW�2SHUDWRUV

� 2YHUORDGLQJ RSHUDWRUV�RI�WKH�W\SH�23 VKRXOG�EH�GRQH�ZLWK�FDUH�± $OZD\V XVH�PHPEHU IXQFWLRQV

ª)ULHQGV�GR�QRW�JXDUDQWHH�WKDW�OHIW�RSHUDQG�LV�DQ�OYDOXH��

± 7KH�UHWXUQ�W\SH�VKRXOG�EH�D�UHIHUHQFH WR�WKH�FODVV�

ª&���DOORZV�FRQVWUXFWV�RI�WKH�IRUP��;�� �<�� �=�

± 7KH�RSHUDWRU�VKRXOG�UHWXUQ UHIHUHQFH�WR��� WKLV�± 7KH�DERYH�LV�WUXH�IRU�VLPSOH�DVVLJQPHQW�� D� �E� �F

� 7KH�FRPSLOHU�PD\�QRW�HQIRUFH�DOO�WKHVH�UXOHV�

Page 10: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH���

E(J,Q6O,G(

���

$�%LQDU\�2SHUDWRU�0HPEHU�)LUVW�YHUVLRQ�

FODVV 5DWLRQDO�^SXEOLF�

�������5DWLRQDO�RSHUDWRU � �FRQVW 5DWLRQDO�YDO�^�W� �W� �YDO�E ��YDO�W �E�

E� �YDO�E�QRUPDOL]H���UHWXUQ WKLV������D�UHIHUHQFH�WR�WKH�REMHFW

`�������

`�

5DWLRQDO�U��������U��������U�������U��� ����U��� �U���� �U��

E(J,Q6O,G(

���

%LQDU\�2SHUDWRU�0HPEHUV�6HFRQG�YHUVLRQ�

FODVV 5DWLRQDO�^

SXEOLF����8VLQJ�SUHYLRXVO\�GHILQHG�RSHUDWRUV�

5DWLRQDO�RSHUDWRU � �FRQVW 5DWLRQDO�YDO��

^ UHWXUQ WKLV � WKLV ��YDO��`

5DWLRQDO�RSHUDWRU � �FRQVW 5DWLRQDO�YDO��

^ UHWXUQ WKLV � WKLV � YDO��`

5DWLRQDO�RSHUDWRU �FRQVW 5DWLRQDO�YDO��

^�UHWXUQ WKLV � WKLV �YDO��`

5DWLRQDO�RSHUDWRU � �FRQVW 5DWLRQDO�YDO��

^�UHWXUQ WKLV � WKLV ��YDO�

�������

`�,Q�FRQWUDVW�WR�WKH�DERYH��H[SHULHQFHG�&���SURJUDPPHUVZLOO�GHILQH�RSHUDWRU�23 XVLQJ�RSHUDWRU�23

Page 11: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH���

E(J,Q6O,G(

���

%LQDU\�2SHUDWRUV�&RPELQDWLRQ

FODVV 5DWLRQDO�^SXEOLF�

�������5DWLRQDO�RSHUDWRU �FRQVW 5DWLRQDO�YDO�^�W� �YDO�W�

E� �YDO�E�QRUPDOL]H���UHWXUQ WKLV������D�UHIHUHQFH�WR�WKH�REMHFW

``�

5DWLRQDO�RSHUDWRU �FRQVW 5DWLRQDO�D��FRQVW 5DWLRQDO�E�^�5DWLRQDO�WPS�D��UHWXUQ WPS �E�

` 1RQ�PHPEHU��QRQ�IULHQG�IXQFWLRQ

E(J,Q6O,G(

���

5HODWLRQDO�)ULHQG�2SHUDWRUV:H�FDQ�JR�RQ�DQG�GHILQH�PDQ\�PRUH�IULHQG�RSHUDWRUV�VXFK�DV�DOO�WKH�UHODWLRQDO�RSHUDWRUV�

FODVV 5DWLRQDO�^

SXEOLF��������

IULHQG ERRO RSHUDWRU� �FRQVW 5DWLRQDO��FRQVW 5DWLRQDO��

IULHQG ERRO RSHUDWRU�� �FRQVW 5DWLRQDO��FRQVW 5DWLRQDO��

IULHQG ERRO RSHUDWRU�� �FRQVW 5DWLRQDO��FRQVW 5DWLRQDO��

IULHQG ERRO RSHUDWRU�! �FRQVW 5DWLRQDO��FRQVW 5DWLRQDO��

IULHQG ERRO RSHUDWRU����FRQVW 5DWLRQDO��FRQVW 5DWLRQDO��

IULHQG ERRO RSHUDWRU�!��FRQVW 5DWLRQDO��FRQVW 5DWLRQDO��

�������

`�

1RW�DOO�RI�WKHP�QHHG�WR�EH�IULHQG

Page 12: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH���

E(J,Q6O,G(

���

0HPEHU�2SHUDWRUV�YV��)ULHQGV

� 3UHIHU�PHPEHUV��LI�SRVVLEOH�

� 8VH QRQ�PHPEHUV��VRPHWLPHV�IULHQGV�����ZKHQ�\RX�PXVW �H�J��IRU�V\PPHWU\��

� 8VH�PHPEHUV�WR�UHWXUQ�D�UHIHUHQFH�

E(J,Q6O,G(

���

0DNLQJ�&RSLHV�RI�([LVWLQJ�2EMHFWV

7KH�&RS\�&RQVWUXFWRU

DQG�2YHUORDGLQJ�2SHUDWRU

Page 13: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH���

E(J,Q6O,G(

���

7KH�'HIDXOW�$VVLJQPHQW�2SHUDWRU

� 7KH�GHIDXOW�DVVLJQPHQW�RSHUDWRU��UHFXUVLYHO\ DVVLJQV�HDFK�GDWD�PHPEHU�IURP�WKH�REMHFW�RQ�WKH�ULJKW������������WR�WKH�REMHFW�RQ�WKH�OHIW�

� 7KLV�LV�H[DFWO\ ZKDW�ZH�ZDQW������������������������������������������IRU�REMHFWV�OLNH��&RPSOH[���RU 5HFWDQJOH�

&RPSOH[�F������F����������3RLQW�S��������S����������S�������5HFWDQJOH�U��S��S����U��S��S���

�����F�� �F��U�� �U��

�����

E(J,Q6O,G(

���

� +RZHYHU��FRQVLGHU�ZKDW�ZLOO�KDSSHQ�LI�ZH�XVH�WKH�GHIDXOW�DVVLJQPHQW�RSHUDWRU IRU�WKH�ODVW�YHUVLRQ�ZH�KDG�IRU�6WULQJ�

7KH�'HIDXOW�$VVLJQPHQW�2SHUDWRU �&RQW��

6WULQJ�V��³DEF´���V��³Z[\]´��

V�� �V��

� �Z_[_\_]_?�D_E_F_?�

� �Z_[_\_]_?�D_E_F_?�

%$1*

Page 14: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH���

E(J,Q6O,G(

���

+HUH�LV�KRZ�WR�FRUUHFWO\�LPSOHPHQWDQ�DVVLJQPHQW�RSHUDWRU IRU�WKH�FODVV�6WULQJ�

7KH�'HIDXOW�$VVLJQPHQW�2SHUDWRU �&RQW��

6WULQJ6WULQJ��RSHUDWRU �FRQVW 6WULQJ�UKV�^�LI �WKLV �UKV��UHWXUQ WKLV�

OHQ �UKV�OHQ�GHOHWH>@ V�V� �QHZ FKDU>OHQ ���@�VWUFS\�V��UKV�V��UHWXUQ WKLV�

`

�5HWXUQ�D�UHIHUHQFH�$�PHPEHU�IXQFWLRQ�1R�VHOI�DVVLJQPHQW

�)UHH�ROG�PHPRU\�$OORFDWH�QHZ�PHPRU\�:RUN�ZLWK�QHZ�PHPRU\�5HWXUQ�WKH�OKV�REMHFW

$�VDIHU��PRUH�HIILFLHQW��LPSOHPHQWDWLRQ�LV�VXJJHVWHG�LQ��&���)$4V���E\�0��&OLQH

E(J,Q6O,G(

���

7KH�&RS\�&RQVWUXFWRU

� 7KH�DVVLJQPHQW�RSHUDWRU FRSLHV���������������������������DQ�H[LVWLQJ�REMHFW LQWR�DQ�H[LVWLQJ�REMHFW�

� %XW�LQ�PDQ\�FDVHV�ZH�KDYH�WR�FUHDWH�D�QHZ�REMHFWWKDW�LV�DQ�H[DFW�FRS\�RI�DQ�DOUHDG\�H[LVWLQJ�REMHFW�

� 7KH�PRVW�YLVLEOH�FDVH�LV�ZKHQ�GHILQLQJ�D�YDULDEOHWKDW�LV�LQLWLDOL]HG�E\�DQ�REMHFW�RI�WKH�VDPH�W\SH�

LQW L�� ����M����GRXEOH [�� �L��\� �[�&RPSOH[�F�� �[��F�� �F��6WULQJ��V��³DEF´���V�� �V���V��V���

Page 15: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH���

E(J,Q6O,G(

���

� /HVV�YLVLEOH�FDVHV�DUH�± 3DVVLQJ�DQ�DUJXPHQW��E\�YDOXH��LQWR�D�IXQFWLRQ�

± $�IXQFWLRQ�UHWXUQV�D�YDOXH �DQG�QRW�D�UHIHUHQFH��

� ,Q�DOO�WKHVH�FDVHV�D�FRQVWUXFWRU PXVW�FRQVWUXFW WKH�QHZ�REMHFW�DQG�LW�LV�QDPHG�����WKH�FRS\�&WRU�

7KH�&RS\�&RQVWUXFWRU �&RQW��

FODVV�6WULQJ�^SXEOLF�

�����6WULQJ�FRQVW 6WULQJ�VUF���OHQ�VUF�OHQ��

V�VWUFS\�QHZ FKDU>OHQ��@��VUF�V�^`�����

`�

E(J,Q6O,G(

���

� +RZ�FRXOG�ZH�PDQDJH�ZLWKRXW�D�FRS\�&WRUIRU�FODVVHV�OLNH�&RPSOH[ RU�5DWLRQDO "

ª %HFDXVH�WKH�FRPSLOHU�FUHDWHV�D�GHIDXOW�FRS\�&WRU��ZKHQHYHU�D�FODVV�LV�GHILQHG�ZLWKRXW�RQH�

� +RZ�GRHV�WKH�WKH GHIDXOW�FRS\�&WRU ZRUN"ª ,W�LQLWLDOL]HV�HDFK�GDWD�ILHOG RI�WKH�QHZ�REMHFW����������������������E\�WKH�FRUUHVSRQGLQJ�YDOXH IURP�WKH�LQLWLDOL]LQJ�REMHFW������������������XVLQJ�WKH�DSSURSULDWH�FRS\�&WRU ���

7KH�&RS\�&RQVWUXFWRU �&RQW��

8VXDOO\��\RX�ZDQW�WR�VKDUH�FRGH�EHWZHHQ RSHUDWRU DQG FRS\�&WRU�

XVLQJ SULYDWH IXQFWLRQV

Page 16: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH���

E(J,Q6O,G(

���

7KH�%LJ�7KUHH

0DUVKDO�&OLQH��WKH�DXWKRU�RI�WKH�ERRN�&����)$4V�

KDV�QRWHG�WKH�IROORZLQJ�

,Q�DOPRVW�DOO�FDVHV�RI�FODVV�GHILQLWLRQV�

ZKHQHYHU�\RX�QHHG�WR�GHILQH�RQH�RI

$�FRS\�&WRU

$�'WRU

$Q�DVVLJQPHQW�RSHUDWRU

<28�1(('�7+(0�$//

7KH�IROORZLQJ�³HTXDWLRQ´ LV�WKH�³UHDVRQ´������RSHUDWRU ��'WRU ��FRS\&WRU

E(J,Q6O,G(

���

2SHUDWRU�2YHUORDGLQJ�7HVW�&DVH

,QSXW�2XWSXW�2SHUDWRUVE\

$\DO ,W]NRYLW]

Page 17: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH���

E(J,Q6O,G(

���

,QSXW�2XWSXW�ZLWK�&��

�LQFOXGH��VWGLR�K!LQW����L�GRXEOH�I������VFDQI�³�G �OI´��L��I��SULQWI�³�G �I?Q´��L��I��ISULQWI�VWGHUU��³�I´��I��

�LQFOXGH��VWGLR�K!LQW����L�GRXEOH�I������VFDQI�³�G �OI´��L��I��SULQWI�³�G �I?Q´��L��I��ISULQWI�VWGHUU��³�I´��I��

�LQFOXGH��LRVWUHDP�K!LQW����L�GRXEOH�I������FLQ !!�L�!!�I�FRXW ���L����I����HQGO�FHUU ���I�

�LQFOXGH��LRVWUHDP�K!LQW����L�GRXEOH�I������FLQ !!�L�!!�I�FRXW ���L����I����HQGO�FHUU ���I�

&

��

FLQ��FRXW��FHUU DUH�REMHFWV�ZKLFK�UHSUHVHQW�WKH�VWGLQ��VWGRXW��VWGHUU UHVSHFWLYHO\�

8VLQJ�RSHUDWRU�!!�DQG�RSHUDWRU����REMHFWV�FDQ�SHUIRUP�LQSXW�RXWSXW�

RSHUDWLRQV�DUH�SHUIRUPHG�DFFRUGLQJ�WR�WKH�W\SHV�RI�WKH�REMHFWV�� QR�IRUPDWV�

E(J,Q6O,G(

���

8VLQJ�,�2�RSHUDWRUVUDWKHU�WKDQ�IXQFWLRQ�FDOOV

� (DVLHU�WR�SURJUDP��± 1R�QHHG�WR�VSHFLI\�W\SH���G���I��HWF�

� 2EMHFW�UHDG�ZULWH�WKHPVHOYHV��,QIRUPDWLRQ�KLGLQJ��± :H�DVN�WKH�REMHFW�WR�ZULWH�LWVHOI�

± 2EMHFW�DVNV�WR�JHW�WKH�DSSURSULDWH�GDWD�IRU�LWV�LQWHUQDO�GDWD�VWUXFWXUHV�

± 7U\�SULQWI�³"""´��FRPSOH[��

� 5REXVW�FRGH�± $YRLG�EXJV�OLNH�VFDQI�³�I´��L����L�LV�LQW�

� )XWXUH�H[WHQVLRQV�± )XWXUH�FODVVHV�VKRXOG�MXVW�LQSOHPHQW RSHUDWRUV�!!�DQG����IRU�WKHPVHOYHV�

Page 18: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH���

E(J,Q6O,G(

���

LVWUHDP � PHPEHU�IXQFWLRQV��SDUWLDO�OLVW�

&RQVWUXFWLRQ�'HVWUXFWLRQ�² 3XEOLF�0HPEHUV

�LVWUHDP &RQVWUXFWV�DQ�LVWUHDP REMHFW�

�aLVWUHDP 'HVWUR\V�DQ�LVWUHDP REMHFW�

,QSXW�)XQFWLRQV�² 3XEOLF�0HPEHUV

�JHW ([WUDFWV�FKDUDFWHUV�IURP�WKH�VWUHDP�

�SHHN 5HWXUQV�D�FKDUDFWHU�ZLWKRXW�H[WUDFWLQJ�LW�IURP�WKH�VWUHDP�

�JHWOLQH ([WUDFWV�FKDUDFWHUV�IURP�WKH�VWUHDP��H[WUDFWV�DQG�GLVFDUGV�GHOLPLWHUV��

2WKHU�)XQFWLRQV�² 3XEOLF�0HPEHUV

�SXWEDFN 3XWV�FKDUDFWHUV�EDFN�WR�WKH�VWUHDP�

2SHUDWRUV�² 3XEOLF�0HPEHUV

�RSHUDWRU�!! ([WUDFWLRQ�RSHUDWRU�IRU�YDULRXV�W\SHV�

E(J,Q6O,G(

���

8VLQJ�LVWUHDP PHPEHU�IXQFWLRQV

5HDGLQJ�D�OLQH�IURP�FLQ

FRQVW�LQW�PD[BOLQH ����

FKDU�OLQH>PD[BOLQH@�

FLQ�JHWOLQH�OLQH��PD[BOLQH���

5HDGLQJ�D�VLQJOH�FKDU�IURP�FLQ

LQW�F��

F� �FLQ�JHW����

5HDGLQJ�D�OLQH�IURP�FLQ

FRQVW�LQW�PD[BOLQH ����

FKDU�OLQH>PD[BOLQH@�

FLQ�JHWOLQH�OLQH��PD[BOLQH���

5HDGLQJ�D�VLQJOH�FKDU�IURP�FLQ

LQW�F��

F� �FLQ�JHW����

5HDGLQJ�D�VLQJOH�FKDU�IURP�FLQZLWKRXW�UHPRYLQJ�LW�IURP�TXHXH

LQW�F�

F� �FLQ�SHHN����

LI��F� �(2)��UHWXUQ�

3XWWLQJ�D�UHDG�FKDUDFWHU�EDFN

LQW�F� �FLQ�JHW����

LI��F� �µO¶��^

ORDGBGE���

FLQ�SXWEDFN�F���

`

5HDGLQJ�D�VLQJOH�FKDU�IURP�FLQZLWKRXW�UHPRYLQJ�LW�IURP�TXHXH

LQW�F�

F� �FLQ�SHHN����

LI��F� �(2)��UHWXUQ�

3XWWLQJ�D�UHDG�FKDUDFWHU�EDFN

LQW�F� �FLQ�JHW����

LI��F� �µO¶��^

ORDGBGE���

FLQ�SXWEDFN�F���

`

Page 19: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH���

E(J,Q6O,G(

���

RVWUHDP � PHPEHU�IXQFWLRQV��SDUWLDO�OLVW�

&RQVWUXFWLRQ�'HVWUXFWLRQ�² 3XEOLF�0HPEHUV

�RVWUHDP &RQVWUXFWV�DQ�RVWUHDP REMHFW�

�aRVWUHDP 'HVWUR\V�DQ�RVWUHDP REMHFW�

)ODJ�DQG�)RUPDW�$FFHVV�)XQFWLRQV�² 3XEOLF�0HPEHUV

�SUHFLVLRQ 6HWV�RU�UHDGV�WKH�VWUHDPV�IORDWLQJ�SRLQW�IRUPDW�GLVSOD\�SUHFLVLRQ�

�ZLGWK 6HWV�RU�UHDGV�WKH�VWUHDPV�RXWSXW�ILHOG�ZLGWK�

2SHUDWRUV�² 3XEOLF�0HPEHUV

�RSHUDWRU��� ,QVHUWLRQ�RSHUDWRU�IRU�YDULRXV�W\SHV�

0DQLSXODWRUV

�HQGO ,QVHUWV�D�QHZOLQH VHTXHQFH�DQG�IOXVKHV�WKH�EXIIHU�

�HQGV ,QVHUWV�D�QXOO�FKDUDFWHU�WR�WHUPLQDWH�D�VWULQJ�

E(J,Q6O,G(

���

8VLQJ�RVWUHDP PHPEHU�IXQFWLRQV

FRXW�ZLGWK����

FRXW�SUHFLVLRQ����

FRXW�RSHUDWRU�������������������RU���FRXW �����������

!��ZLOO�SULQW����������

FRXW ���µ>¶ ��������������µ@¶ ���HQGO�

!�ZLOO�SULQW��>��������@!

FRXW�ZLGWK����

FRXW�SUHFLVLRQ����

FRXW�RSHUDWRU�������������������RU���FRXW �����������

!��ZLOO�SULQW����������

FRXW ���µ>¶ ��������������µ@¶ ���HQGO�

!�ZLOO�SULQW��>��������@!

Page 20: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH���

E(J,Q6O,G(

���

$GGLQJ�,�2�WR�WKH�5DWLRQDO�1XPEHU�&ODVV

FODVV�5DWLRQDO�^SULYDWH�

LQW�W�E�YRLG�QRUPDOL]H�������$�SULYDWH�PHPEHU�IXQFWLRQ�

SXEOLF����FRQVWUXFWRU5DWLRQDO�LQW WRS� ����LQW ERWWRP� ����W�WRS���E�ERWWRP��^�QRUPDOL]H���`

���L�R�RSHUDWRUVIULHQG�LVWUHDP

RSHUDWRU!!�LVWUHDP�LQ���������5DWLRQDO�U��IULHQG�RVWUHDP

RSHUDWRU���RVWUHDP�RXW��FRQVW�5DWLRQDO�U��

���RWKHU�RSHUDWRUV�����

`�

FODVV�5DWLRQDO�^SULYDWH�

LQW�W�E�YRLG�QRUPDOL]H�������$�SULYDWH�PHPEHU�IXQFWLRQ�

SXEOLF����FRQVWUXFWRU5DWLRQDO�LQW WRS� ����LQW ERWWRP� ����W�WRS���E�ERWWRP��^�QRUPDOL]H���`

���L�R�RSHUDWRUVIULHQG�LVWUHDP

RSHUDWRU!!�LVWUHDP�LQ���������5DWLRQDO�U��IULHQG�RVWUHDP

RSHUDWRU���RVWUHDP�RXW��FRQVW�5DWLRQDO�U��

���RWKHU�RSHUDWRUV�����

`�

E(J,Q6O,G(

���

$GGLQJ�,�2�WR�WKH�5DWLRQDO�1XPEHU�&ODVV �FRQW��

LVWUHDPRSHUDWRU!!�LVWUHDP�LQ���������5DWLRQDO�U��^��LQ�!!�U�W !!�U�E�

UHWXUQ�LQ�`�

RVWUHDPRSHUDWRU���RVWUHDP�RXW��FRQVW�5DWLRQDO�U�^ RXW����U�W ���µ�¶ ���U�E�

UHWXUQ�RXW�`�

LVWUHDPRSHUDWRU!!�LVWUHDP�LQ���������5DWLRQDO�U��^��LQ�!!�U�W !!�U�E�

UHWXUQ�LQ�`�

RVWUHDPRSHUDWRU���RVWUHDP�RXW��FRQVW�5DWLRQDO�U�^ RXW����U�W ���µ�¶ ���U�E�

UHWXUQ�RXW�`�

5DWLRQDO�U��������U�������

FRXW ���U�����µ�¶ ���U�����µ µ ���U��U�����HQGO�!��ZLOO�SULQW������������ ����

5DWLRQDO�U��������U�������

FRXW ���U�����µ�¶ ���U�����µ µ ���U��U�����HQGO�!��ZLOO�SULQW������������ ����

Page 21: Operator Overloading - CS Technion

&RS\ULJKW���������� ����

&��*RWVPDQ ��<�0��.LPFKL

&RPSXWHU�6FLHQFH�'HSW����7HFKQLRQ

�������� ³§Á§ 2SHUDWRU�2YHUORDGLQJ2SHUDWRU�2YHUORDGLQJ

3DJH���

E(J,Q6O,G(

���

$�GLIIHUHQW�ZD\�RI�RYHUORDGLQJ���RSHUDWRU��

FODVV�5DWLRQDO�^�����RVWUHDP�SULQW�RVWUHDP�RV��FRQVW^�UHWXUQ RV ���W����µ�¶ ���E��`�����

`�

���1RQ�IULHQG��LI 5DWLRQDO��SULQW���LV SXEOLFLQOLQH�RVWUHDPRSHUDWRU���RVWUHDP�RXW��FRQVW�5DWLRQDO�U�^�UHWXUQ U�SULQW�RXW���`

FODVV�5DWLRQDO�^�����RVWUHDP�SULQW�RVWUHDP�RV��FRQVW^�UHWXUQ RV ���W����µ�¶ ���E��`�����

`�

���1RQ�IULHQG��LI 5DWLRQDO��SULQW���LV SXEOLFLQOLQH�RVWUHDPRSHUDWRU���RVWUHDP�RXW��FRQVW�5DWLRQDO�U�^�UHWXUQ U�SULQW�RXW���`

7KH�DGYDQWDJHV�RI�WKLVZLOO�EH�FOHDU�LQ�WKH�IXWXUH

E(J,Q6O,G(

���

6SHFLDO�2SHUDWRUV