6. 오버로딩(Overloading)

2023. 1. 14. 11:31· 언어 공부/C++

함수 오버로딩

  • 함수의 이름은 동일
  • 매개변수의 type, 갯수가 다름
  • return type은 관계없음

연산자 오버로딩

  • C++ 은 다양한 연산자 오버로딩 가능
  • >>, << 구현의 경우 friend 키워드를 통해 구현 가능(멤버함수로 불가)

friend

  • 다른 클래스나 함수가 나의 private 또는 protected 멤버에 접근할 수 있게 허용
//<<, >>멤버함수 불가, 외부함수에만 구현 가능, 항상 참조변수써야함
class Complex {
private:
	double re, im;
public:
	Complex(double r) { re = r; im = 0; }
	Complex(double r = 0, double i = 0) : re(r), im(i){}
	void Output() { cout << re << " + " << im << "i" << endl; }
	Complex& operator+=(Complex);
	Complex& operator-();
	friend Complex operator+(Complex& v1, Complex& v2);
	friend Complex operator++(Complex& v1);//전위 연산자
	friend Complex operator++(Complex& v1, int x);//후위 연산자
	friend ostream& operator<<(ostream& os, Complex& v1);
	friend istream& operator>>(istream& is, Complex& v1);
};

Complex& Complex::operator+=(Complex v) {
	this->re += v.re;
	this->im += v.im;
	return *this;
}

Complex& Complex::operator-() {
	this->re = -re;
	this->im = -im;
	return  *this;
}

Complex operator+(Complex& v1, Complex& v2) {

	Complex tmp;
	tmp.re = v1.re + v2.re;
	tmp.im = v1.im + v2.im;
	return tmp;
}

Complex operator++(Complex& v1) {
	return Complex(++v1.re, ++v1.im);
}

Complex operator++(Complex& v1, int x) {
	Complex tmp = v1;
	v1.re++;
	v1.im++;
	return tmp;
}

ostream& operator<<(ostream& os, Complex& v1) {

	os << "(" << v1.re << " + " << v1.im << "i)" << endl;

	return os;
}

istream& operator>>(istream& is, Complex& v1) {
	is >> v1.re >> v1.im;
	return is;
}

'언어 공부 > C++' 카테고리의 다른 글

5. 복사생성자와 얕은 복사, 깊은 복사  (0) 2023.01.14
4. String class 와 참조  (0) 2023.01.14
3. 객체배열과 동적메모리  (0) 2023.01.14
2. 클래스와 생성자, 소멸자  (0) 2023.01.14
1. C언어 와 C++의 다른 점  (0) 2023.01.14
'언어 공부/C++' 카테고리의 다른 글
  • 5. 복사생성자와 얕은 복사, 깊은 복사
  • 4. String class 와 참조
  • 3. 객체배열과 동적메모리
  • 2. 클래스와 생성자, 소멸자
LTSGOD
LTSGOD
LTSGOD
TS's log
LTSGOD
전체
오늘
어제
  • 분류 전체보기 (138)
    • 언어 공부 (18)
      • C++ (6)
      • Python (12)
    • AI (39)
      • Numpy (2)
      • Pandas (5)
      • Pytorch (11)
      • Deep Learning (9)
      • CV (11)
      • 과제에서 얻은 것 (1)
    • 수학 (17)
      • 확률론 (8)
      • AI Math (9)
    • Spring (24)
      • 스프링입문 (8)
      • 스프링 원리 - 기본편 (5)
      • 스프링부트와 AWS로 혼자구현하는 웹 서비스 (10)
      • JPA (1)
      • spring MVC (0)
    • CS 기본 (25)
      • 네트워크 (5)
      • OS (4)
      • 자료구조 (9)
      • DB (7)
    • Git (2)
    • 백준 (1)
    • 활동 (8)
      • 2023 겨울 (1)
      • 네이버 부스트캠프 AI Tech (7)
    • HTML,CSS (2)
    • 도커 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 붓캠
  • 회고
  • 백준
  • Camper
  • 5기
  • AI
  • AWS
  • 부스트캠프
  • BOOSTCAMP
  • pytorch
  • 후기
  • AI Tech 5기

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
LTSGOD
6. 오버로딩(Overloading)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.