C ++에서 연산자 오버로딩을 구현하는 방법?



이 기사에서는 운영자 처리를 쉽게하는 또 다른 객체 지향 개념을 살펴 보겠습니다. 우리는 C ++로 연산자 오버로딩을 배우게 될 것입니다.

이 기사에서는 운영자 처리를 쉽게하는 또 다른 객체 지향 개념을 살펴볼 것입니다. 그것은 우리가 운영자의 세부 사항에 들어갈 것입니다 C ++에서 오버로딩 . 이 기사에서는 다음 사항을 다룰 것입니다.

이제 C ++의 연산자 오버로딩에 대한이 기사를 시작하겠습니다.





C ++에서 오버로딩

이름은 같지만 매개 변수의 수나 유형이 다른 동일한 클래스의 멤버를 두 개 이상 생성하는 경우이를 C ++ 오버로딩이라고합니다.



C ++에서는 다음과 같이 오버로드 할 수 있습니다.

  • 행동 양식
  • 생성자
  • 인덱싱 된 속성

이러한 멤버에는 매개 변수 만 있기 때문입니다.

C ++의 연산자 오버로딩에 대한이 기사를 계속 진행합니다.



C ++의 오버로딩 유형

  • 기능 과부하
  • 연산자 오버로딩

오버로딩-C ++에서 연산자 오버로딩-Edureka

C ++의 연산자 오버로딩에 대한이 기사를 계속 진행합니다.

Java에서 double을 int로 캐스팅

연산자 오버로딩이 사용되는 이유는 무엇입니까?

C ++ 프로그램은 연산자 오버로딩에 대한 지식 없이도 작성할 수 있습니다. 또한 프로그래머는 프로그램을 직관적으로 만들기 위해 운영자 운영을 깊이 사용합니다. 예를 들면

다음과 같이 코드를 바꿀 수 있습니다.

계산 = add (divide (a, b), multiply (a, b))

방정식

계산 = (a / b) + (a * b)

연산자 오버로딩은 C ++에서 대부분의 연산자에 대한 새 정의를 개발할 수있는 간단하고 쉬운 방법을 제공합니다. 충분한 지식이 있으면 함수와 연산자 오버로딩 기술을 창의적으로 사용하여 거의 새로운 언어를 만들 수 있습니다. 다음을 제외하고 C ++의 모든 연산자를 오버로드 할 수 있습니다.
● 범위 연산자 (: :)
● 크기 연산자 (Sizeof)
● 멤버 선택기 (.)
● 멤버 포인터 선택기 (*)
● 삼항 연산자 (? :)

연산자 오버로딩 구문

자바에 가장 적합한 IDE는 무엇입니까
return_type class_name : : operator op (argument_list) {// function body}

여기서 반환 유형은 함수가 반환하는 값의 유형입니다. class_name은 클래스의 이름입니다.

C ++의 연산자 오버로딩에 대한이 기사를 계속 진행합니다.

C ++에서 연산자 오버로딩 구현

연산자 함수는 비 정적 (멤버 함수)이거나 친구 함수 여야 오버로드됩니다. 연산자 오버로딩 함수는 왼쪽 피연산자가 해당 클래스의 개체 인 경우 멤버 함수에 적용될 수 있지만 Left 피연산자가 다른 경우 연산자 오버로딩 함수는 비 멤버 함수로 정의되어야합니다.
연산자 오버로딩 함수는 클래스의 개인 및 보호 멤버에 대한 액세스가 필요한 경우 친구 함수로 만들 수 있습니다. 예를 들어, 연산자 op는 연산자 함수입니다. 여기서 op는 오버로드되는 연산자이고 연산자는 키워드입니다. 연산자 오버로딩은 멤버 함수, 비 멤버 함수 또는 친구 함수가 될 수있는 함수를 구현하여 달성 할 수 있습니다.

운영자 기능과 일반 기능의 차이점은 무엇입니까?

운영자 기능은 일반 기능과 동일합니다. 유일한 차이점은 연산자 함수의 이름은 항상 연산자 키워드 뒤에 연산자 기호가 있고 해당 연산자가 사용될 때 연산자 함수가 호출된다는 것입니다.

C ++의 연산자 오버로딩에 대한이 기사를 계속 진행합니다.

과부하 접근 방식의 유형

연산자 오버로딩은 세 가지 접근 방식을 사용하여 수행 할 수 있습니다.

  • 단항 연산자 오버로딩.
  • 이항 연산자 오버로딩.
  • friend 함수를 사용하여 이항 연산자를 오버로딩합니다.

C ++의 연산자 오버로딩에 대한이 기사를 계속 진행합니다.

단항 연산자 오버로딩

단항‘–‘연산자를 살펴 보겠습니다. 마이너스 연산자는 단항으로 사용될 때 하나의 피연산자 만 필요합니다. 이 연산자가 기본 데이터 변수에 적용될 때 피연산자의 부호를 변경한다는 것을 알고 있습니다. 이 연산자를 오버로드하여 int 또는 float 변수에 적용되는 것과 같은 방식으로 객체에 적용 할 수 있도록하는 방법을 살펴 보겠습니다. 단항 마이너스는 객체에 적용될 때 각 데이터 항목을 감소시켜야합니다.

예:

#include using namespace std class Height {public : // Member Objects int feet, inch // 객체 값을 초기화하는 생성자 Height (int f, int i) {feet = f inch = i} // Overloading (-) operator to 감소 수행 // Height 객체의 연산 void operator- () {feet-- inch-- cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

산출:

자바에 대한 경로를 설정하는 방법

설명:
위의 예에서는 '–'단항 연산자를 오버로드하여 Height 클래스의 두 변수에서 감소를 수행합니다. 두 개의 매개 변수를 생성자에 전달하고 값을 feet 및 inch 변수에 저장합니다. 그런 다음 연산자 오버로딩 함수를 정의합니다 (void operator- ()
) 두 변수가 한 위치만큼 감소합니다.
-h1을 작성하면 연산자 오버로딩 함수를 호출하고 생성자에 전달 된 값을 감소시킵니다.

C ++의 연산자 오버로딩에 대한이 기사를 계속 진행합니다.

이항 연산자 오버로딩

두 개의 피연산자에서 작동하는 연산자의 오버로딩입니다. Height 클래스의 동일한 예제를 보겠습니다. 이번에는 두 개의 Height 객체 h1과 h2를 추가합니다.

예:

#include using namespace std class Height {public : int feet, inch Height () {feet = 0 inch = 0} Height (int f, int i) {feet = f inch = i} // 수행 할 (+) 연산자 오버로딩 // 이항 연산자를 사용하여 두 거리 객체 추가 Height operator + (Height & d2) // 참조로 호출 {// Height를 반환하는 객체 생성 h3 // 피트와 인치 더하기 h3.feet = feet + d2.feet h3. inch = inch + d2.inch // 결과 객체 반환 return h3}} int main () {Height h1 (3, 7) Height h2 (6, 1) Height h3 // 오버로드 된 연산자 사용 h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

산출:

설명:
Height operator + (Height & h2), 여기서 returns_type of function is class Height 따라서 Height 클래스의 객체 h3을 반환합니다. h3 = h1 + h2 라인에서 h1은 클래스 객체의 연산자 함수를 호출하고 h2를 매개 변수로 취한 다음 h3.feet = feet + d2.feet 및 h3.inch = inch + d2.inch를 적용하여 h3 객체와 관련된 변수의 피트 및 인치 변수 값의 합계.
'h3 = h1 + h2'문이 연산자 오버로드 함수를 호출하면 객체 h1이 함수 호출을 담당하고 h2는 함수에 전달되는 인수 역할을합니다. 위의 호출 문은 h3 = h1.operator + (h2)와 동일하므로 h2의 데이터 멤버는 직접 액세스되고 h2의 데이터 멤버 (인수로 전달됨)는 도트 연산자를 사용하여 액세스됩니다.

연산자 오버로딩 규칙

  • 기존 연산자 만 오버로드 할 수 있으며 새 연산자는 오버로드 할 수 없습니다.
  • 오버로드 된 연산자는 사용자 정의 데이터 유형의 피연산자를 하나 이상 포함해야합니다.
  • 특정 연산자를 오버로드하기 위해 friend 함수를 사용하지 않습니다. 그러나 멤버 함수를 사용하여 이러한 연산자를 오버로드 할 수 있습니다.
  • 단항 연산자가 멤버 함수를 통해 오버로드되면 명시 적 인수를받지 않지만 friend 함수에 의해 오버로드되면 하나의 인수를받습니다.
  • 이항 연산자가 멤버 함수를 통해 오버로드되면 하나의 명시 적 인수를 취하고, 친구 함수를 통해 오버로드되면 두 개의 명시 적 인수를 취합니다.

따라서 우리는 'C ++의 연산자 오버로딩'에 대한이 기사를 끝냈습니다. 자세한 내용은 신뢰할 수있는 온라인 학습 회사 인 Edureka의 Java Training을 확인하십시오. 에두 레카 코스는 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

질문이 있으십니까? 이 블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.