객체지향프로그래밍 9주차

2021. 11. 3. 23:49·학교수업
반응형

프렌드 함수

- 클래스의 멤버 함수가 아닌 외부 함수 ex) 전역함수, 다른 클래스 멤버 함수

- friend함수로 클래스 내에 선언된 함수

- 프랜드 선언 필요성 (클래스 멤버로 선언은 무리지만 접근이 필요한 외부 함수)

 

프렌드 함수가 되는 3가지

- 전역 함수 : 클래스 외부에 선언된 전역 함수

ex) friend bool equals(Rext r,Rect s);

- 다른 클래스의 멤버 함수 : 다른 클래스의 특정 멤버 함수

ex) friend bool RectManager::equals(Rect r,Rect s);

- 다른 클래스 전체 : 다른 클래스의 모든 멤버 함수

ex) friend RectManager;

 

연산자(operator) 중복

- C++언어에는 연산자 중복이 가능

- 높은 프로그램 가독성

ex) 정수 더하기, 문자열 합치기, 색 섞기, 배열 합치기 등 모두 가능

- C++ 본래 연산자만 중복 가능 ex) 3%%5 같은 연산자는 컴파일 오류다.

- 피 연산자 타입이 다른 새로운 연산 정의를 해야 한다.

- 연산자는 함수 형태로 구현

- 반드시 클래스와 관계를 가짐 ( 피연산자 객체이기 때문)

- 연산 우선 순위 변경 X

- 모든 연산자가 중복이 가능하지는 않다.

 

연산자 함수 구현 방법 2가지

1. 클래스의 멤버 함수로 구현 (바람직 하다)

2. 외부 함수로 구현하고 클래스에 프렌드 함수로 선언

연산자 함수 형식

- 리턴타입 operator연산자(매개변수리스트);

 

ex) c = a+b; == c = a.operator+(b); //컴파일러가 변환한다. 

 

전위 ++ 연산자 중복

++a -> 컴파일러에 의한 변환 => a.operator++();

++a -> ++(a) //컴파일러가 변환

후위 ++ 연산자 중복

a++ -> 컴파일러에 의한 변환 => a.operator++(임의의 정수)

a++ -> ++(a,0) //컴파일러가 변환

 

외부에 연산자 함수를 구현하는 경우는 언젠가

ex) b= a+2를 하면 해결이 되지만 b= 2+a를 하는 경우?

b= a.operator+(2)를 하는 것은 가능하지만 b= 2.operator(a)가 가능한가?

이는 불가능 하기 때문에 변환이 되지 않는다.

즉, 외부에 연산자 함수를 구현하여 b=+(2,a)형태로 변환되게 해야한다.

방식은 1번 방식(클래스의 멤버 함수로 구현)이 바람직하나 해결되지 않는 경우 외부 함수로 구현해야함.

반응형
저작자표시 (새창열림)

'학교수업' 카테고리의 다른 글

사물인터넷의 이해 9주차  (0) 2021.11.07
웹개발 기초 10주차  (0) 2021.11.05
사물인터넷의 이해 8주차  (1) 2021.11.03
사물인터넷의 이해 7주차  (0) 2021.11.03
정보보호개론 7주차  (0) 2021.11.01
'학교수업' 카테고리의 다른 글
  • 사물인터넷의 이해 9주차
  • 웹개발 기초 10주차
  • 사물인터넷의 이해 8주차
  • 사물인터넷의 이해 7주차
숯불돼지왕갈비
숯불돼지왕갈비
게임 개발을 목표로 학습하는 블로그 입니다!
  • 숯불돼지왕갈비
    게임 개발 공부기
    숯불돼지왕갈비
  • 전체
    오늘
    어제
    • 분류 전체보기 (314)
      • 학교수업 (165)
      • 취업강의 (6)
      • C++ (52)
        • 코딩 테스트 (5)
      • Unreal Engine 5 (26)
        • MMORPG 개발 (26)
      • Unreal Engine 4 (44)
        • Omak Project (3)
        • Unreal Engine 4 개발일지 (9)
        • Unreal Engine 4 (32)
      • Unity (1)
        • 개발 일지 (1)
      • 수학 (3)
        • 소프트웨어 공학용 수학 (3)
      • DirectX 11 (4)
      • 게임 디자인 패턴 (2)
      • 포트폴리오 (1)
      • 자격증 (9)
        • 컴퓨터 활용능력 (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    정렬
    코딩테스트
    알고리즘
    c++
    자료구조
    프로그래머스
    백준
    코딩
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
숯불돼지왕갈비
객체지향프로그래밍 9주차
상단으로

티스토리툴바