42seoul/projects

[C++] operator overloading ( μ—°μ‚°μž μ˜€λ²„λ‘œλ”© ) operator overriding ( μ—°μ‚°μž μ˜€λ²„λΌμ΄λ”© )

2023. 9. 2. 16:36

μ—°μ‚°μž μ˜€λ²„λ‘œλ”©μ„ μ•Œμ•„κ°€κΈ°μ „μ— μš°λ¦¬λŠ” ν΄λž˜μŠ€μ—μ„œμ˜ μ—°μ‚°μžμž¬μ •μ˜λΌλŠ” κ°œλ…μ— λŒ€ν•΄μ„œ μ•Œμ•„μ•Όν•œλ‹€.

 

μ—°μ‚°μž μž¬μ •μ˜

int a = 3;
int b = 5;

c = a + b //

// class =============

class a;
class b;

c = a + b // 

μœ„μ™€ 같이 ν‰λ²”ν•˜κ²Œ int ν˜•μ‹λΌλ¦¬μ˜ 연산은 κ·Έλƒ₯ κ°€λŠ₯ν•˜κ² μ§€λ§Œ μš°λ¦¬κ°€ 진행을 ν•  class끼리의 연산은 class λ‚΄λΆ€μ μœΌλ‘œ μ–΄λ–»κ²Œ 연산을 μ§„ν–‰ν•΄μ•Όν•˜λŠ”μ§€ μ–΄λ– ν•œ 객체끼리 더할건지 μ•Œ 수 μ—†λ‹€.

κ·Έλž˜μ„œ class 끼리 연산을 ν•˜κΈ°μœ„ν•΄μ„œλŠ” λ”°λ‘œ μ •μ˜λ₯Ό ν•΄μ€˜μ•Όν•œλ‹€.

// μ•„λž˜μ™€ 같은 방식을 μ‚¬μš©
class	class::operator + ( const class& other )
{
	class temp;
	temp = this->value + other.value;
	return (temp);
}

 

 

μ—°μ‚°μž μ˜€λ²„λ‘œλ”© (operator overloading)

μ—°μ‚°μž μ˜€λ²„λ‘œλ”©μ΄λž€ 같은 클래슀 λ‚΄μ—μ„œ 같은 μ΄λ¦„μ˜ ν•¨μˆ˜λ₯Ό μ€‘λ³΅μœΌλ‘œ μ •μ˜ν•˜λŠ” 방식이닀.

ν΄λž˜μŠ€λ‚΄μ—μ„œ λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ΄λ‚˜ 개수λ₯Ό λ‹€λ₯΄κ²Œ ν•΄μ„œ 같은 μ΄λ¦„μ˜ ν•¨μˆ˜λ₯Ό μ€‘λ³΅μ μœΌλ‘œ μ •μ˜ν•  수 μžˆλ‹€.

int sum(int a, int b)
{
	return a + b;
}

double sum(double a, double b)
{
	return a + b;
}

μœ„μ™€ 같이 맀개 ν•¨μˆ˜λ₯Ό κ΅¬μ„±ν•˜λ©΄ νƒ€μž…μ— λ§žμΆ°μ„œ ν•΄λ‹Ή ν•¨μˆ˜κ°€ μ‹€ν–‰λœλ‹€κ³  ν•œλ‹€.

 

 

μ—°μ‚°μž μ˜€λ²„λΌμ΄λ”© (operator overriding)

상속받은 ν΄λž˜μŠ€μ—μ„œ ν•¨μˆ˜λ₯Ό μž¬μ •μ˜

μΆ”κ°€μ μœΌλ‘œ μ—°μ‚°μž μ˜€λ²„λ‘œλ”©κ³Ό λΉ„μŠ·ν•œ μ˜€λ²„λΌμ΄λ”©μ΄λΌλŠ” κ°œλ…λ„ μ‘΄μž¬ν•˜λŠ”λ° λΆ€λͺ¨ 클래슀λ₯Ό 상속받은 μžμ‹ν΄λž˜μŠ€μ—μ„œ ν•΄λ‹Ή ν•¨μˆ˜λ₯Ό μž¬μ •μ˜ν•΄μ„œ μ‚¬μš©ν•˜λŠ” 방식을 μ΄μ•ΌκΈ°ν•œλ‹€.

class Parent
{
public:
		void hello() 
		{
			std::cout << "parent";
		}
};

class Child : public Parent
{
public:
		void hello() 
		{
			std::cout << "Child";
		}
}

상황에 λ”°λΌμ„œ λ³€κ²½ κ°€λŠ₯

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)

'42seoul > projects' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[C++] endl κ³Ό β€˜\n’ 차이점  (0) 2023.09.02
[C++] Inheritance ( 상속 ), polymorphism ( λ‹€ν˜•μ„± )  (0) 2023.09.02
[CPP Module] 03  (0) 2023.07.29
[CPP Module] 02  (0) 2023.07.25
[CPP Module] 01  (1) 2021.09.16
  1. μ—°μ‚°μž μž¬μ •μ˜
  2. μ—°μ‚°μž μ˜€λ²„λ‘œλ”© (operator overloading)
  3. μ—°μ‚°μž μ˜€λ²„λΌμ΄λ”© (operator overriding)
moaoh
moaoh
λ‚˜μ˜ μ„±μž₯ 일기.
moaoh
🐢 🐾
moaoh
전체
였늘
μ–΄μ œ
  • Github
  • λΆ„λ₯˜ 전체보기
    • Algorithm
      • κ°œλ…μ •λ¦¬
      • λ¬Έμ œν’€μ΄
    • 42seoul
      • projects
    • CS
    • programming language
      • C++
      • Javascript
      • Go
      • Python
      • Front-end
      • Java
    • Java Spring
    • git
    • 일상
      • μ±… 읽기

졜근 κΈ€

hELLO Β· Designed By μ •μƒμš°
moaoh
[C++] operator overloading ( μ—°μ‚°μž μ˜€λ²„λ‘œλ”© ) operator overriding ( μ—°μ‚°μž μ˜€λ²„λΌμ΄λ”© )
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

단좕킀

λ‚΄ λΈ”λ‘œκ·Έ

λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
Q
Q
μƒˆ κΈ€ μ“°κΈ°
W
W

λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
E
E
λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
C
C

λͺ¨λ“  μ˜μ—­

이 νŽ˜μ΄μ§€μ˜ URL 볡사
S
S
맨 μœ„λ‘œ 이동
T
T
ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
H
H
단좕킀 μ•ˆλ‚΄
Shift + /
⇧ + /

* λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.