C++ Opera예제를 이용한 오버로딩

Opera토르 과부하?

사용 연산자 오버로딩 in C++, 하나의 범위에서 연산자에 대해 두 개 이상의 의미를 지정할 수 있습니다. 연산자 오버로딩의 목적은 사용자 정의 데이터 유형에 대한 연산자의 특별한 의미를 제공하는 것입니다.

연산자 오버로딩의 도움으로 대부분의 것을 다시 정의할 수 있습니다. C++ 연산자. 연산자 오버로딩을 사용하여 하나의 연산자로 다양한 연산을 수행할 수도 있습니다.

통사론

과부하하려면 C++ 연산자를 사용하려면 다음과 같이 클래스 내부에 특수 함수를 정의해야 합니다.

class class_name
{
    ... .. ...
    public
       return_type operator symbol (argument(s))
       {
           ... .. ...
       } 
    ... .. ...
};

위 구문에 대한 설명은 다음과 같습니다.

  • return_type은 함수의 반환 유형입니다.
  • 다음으로, 연산자 키워드를 언급합니다.
  • 기호는 오버로드될 연산자 기호를 나타냅니다. 예를 들어, +, -, <, ++.
  • 인수는 함수와 같은 방식으로 연산자 함수에 전달될 수 있습니다.

예제 1

#include <iostream>
using namespace std;
class TestClass {
private:
	int count;
public:
	TestClass() : count(5) {}
	void operator --() {
		count = count - 3;
	}
	void Display() { 

		cout << "Count: " << count; }
};

int main() {
	TestClass tc;
	--tc;
	tc.Display();
	return 0;
}

출력:

Opera토르 과부하

다음은 코드의 스크린샷입니다.

Opera토르 과부하

코드 설명 :

  1. 해당 기능을 사용하려면 코드에 iostream 헤더 파일을 포함합니다.
  2. 클래스를 호출하지 않고 사용하려면 프로그램에 std 네임스페이스를 포함하세요.
  3. TestClass라는 클래스를 만듭니다.
  4. 클래스 멤버를 비공개적으로 액세스 가능한 것으로 표시하는 비공개 액세스 한정자를 사용하세요.
  5. 정수 변수 개수를 만듭니다. 이 변수는 비공개적으로 액세스할 수 있습니다.
  6. 클래스 멤버를 비공개적으로 액세스 가능한 것으로 표시하는 public 액세스 한정자를 사용하세요.
  7. 클래스 생성자를 사용하여 변수 카운터를 5로 초기화합니다.
  8. — 연산자의 의미를 오버로드합니다.
  9. 연산자는 변수 x의 값을 1 감소시킵니다.
  10. 연산자 오버로딩 섹션의 끝입니다. 연산자에 새 이름이 지정되었습니다.
  11. Display() 함수라는 함수를 정의합니다.
  12. Display() 함수가 호출되면 콘솔에 다른 텍스트와 함께 변수 개수의 값을 인쇄합니다. }는 Display() 함수 본문의 끝을 표시합니다.
  13. 수업 본문이 끝납니다.
  14. main() 함수를 호출합니다. 프로그램 로직은 이 기능 내에 추가되어야 합니다.
  15. TestClass 클래스의 인스턴스를 생성하고 이름을 tc로 지정합니다.
  16. 이는 void 연산자 –() 함수를 호출합니다.
  17. TestClass 클래스의 입장을 사용하여 Display() 함수를 호출합니다.
  18. 함수는 성공적으로 완료되면 값을 반환해야 합니다.
  19. main() 함수 본문의 끝입니다.

다양한 접근 방식 Opera토르 과부하 C++

다음 유형의 함수를 구현하여 연산자 오버로딩을 수행할 수 있습니다.

  1. 회원 기능
  2. 비회원 기능
  3. 친구 기능
  • 연산자 오버로딩 함수는 왼쪽 피연산자가 클래스의 객체인 경우 멤버 함수가 될 수 있습니다.
  • 왼쪽 피연산자가 다른 경우 Opera토르 오버로딩 함수는 비멤버 함수여야 합니다.

private 및 protected 클래스 멤버에 접근해야 하는 경우 연산자 오버로딩 함수를 friend 함수로 만들 수 있습니다.

모두 가능 C++ Opera과부하가 걸리나요?

아니요. 있습니다. C++ 오버로드가 불가능한 연산자.

그들은 다음과 같습니다 :

  • :: -범위 결정 연산자
  • ?: -삼항 연산자.
  • . -멤버 선택기
  • Sizeof 연산자
  • * -멤버 포인터 선택기

상황이 기억하기

  1. 연산자 오버로딩을 사용하면 사용자 정의 유형(객체, 구조체)에 대해서만 연산자 작동 방식을 재정의할 수 있습니다. 내장 유형(float, char, int 등)에는 사용할 수 없습니다.
  2. = 및 & C++ 연산자는 기본적으로 오버로드됩니다. 예를 들어, = 연산자를 사용하여 같은 Class의 객체를 직접 복사할 수 있습니다.
  3. Operator 우선순위는 연산자의 연관 및 우선순위를 변경하지 않습니다. 그러나 괄호를 사용하여 평가 순서를 변경할 수 있습니다.
  4. 오버로드할 수 없는 네 가지 연산자가 있습니다. C++여기에는 범위 결정 연산자(::), 멤버 선택 연산자(.), 함수 포인터를 통한 멤버 선택 연산자(.*) 및 삼항 연산자(?:)가 포함됩니다.

규칙 Opera토르 과부하

다음은 규칙입니다. Opera토르 과부하:

  • 이 기능이 작동하려면 적어도 하나의 피연산자가 사용자 정의 클래스 객체여야 합니다.
  • 기존 연산자만 오버로드할 수 있습니다. 새 연산자는 오버로드할 수 없습니다.
  • 일부 연산자는 프렌드 함수를 사용하여 오버로드할 수 없습니다. 그러나 이러한 연산자는 멤버 함수를 사용하여 오버로드할 수 있습니다.

과부하 방법 Opera바위 산

예제 1

#include <iostream>   
using namespace std;
class OperatorOverload {
private:
	int x;

public:
	OperatorOverload() : x(10) {}
	void operator ++() {
		x = x + 2;
	}
	void Print() {
		cout << "The Count is: " << x;
		}
};
int main() {
	OperatorOverload ov;
	++ov;   
	ov.Print();
	return 0;
}

출력:

과부하 Opera토르 예

다음은 코드의 스크린샷입니다.

과부하 Opera토르 예

코드 설명 :

  1. 해당 기능을 사용하려면 코드에 iostream 헤더 파일을 포함합니다.
  2. 클래스를 호출하지 않고 사용하려면 프로그램에 std 네임스페이스를 포함하세요.
  3. 라는 클래스를 생성합니다. Opera토르오버로드.
  4. 클래스 멤버를 비공개적으로 액세스 가능한 것으로 표시하는 비공개 액세스 한정자를 사용하세요.
  5. 정수 변수 x를 만듭니다. 이 변수는 비공개적으로 액세스할 수 있습니다.
  6. 클래스 멤버를 비공개적으로 액세스 가능한 것으로 표시하는 public 액세스 한정자를 사용하세요.
  7. 클래스 생성자를 사용하여 변수 x를 10으로 초기화합니다.
  8. ++ 연산자의 의미를 오버로드합니다.
  9. 연산자는 변수 x의 값을 2만큼 증가시킵니다.
  10. 연산자 오버로딩 섹션의 끝입니다. 연산자에 새 이름이 지정되었습니다.
  11. Print() 함수를 호출합니다.
  12. Print() 함수가 호출되면 콘솔의 다른 텍스트와 함께 변수 x의 값을 인쇄합니다.
  13. Print() 함수 본문의 끝입니다.
  14. 수업 본문이 끝납니다.
  15. main() 함수를 호출합니다. 프로그램 로직은 이 기능 내에 추가되어야 합니다.
  16. 의 인스턴스를 생성합니다. Operaov라는 torOverload 클래스입니다.
  17. 이는 void operator ++() 함수를 호출합니다.
  18. 의 입장을 활용하라 OperatorOverload 클래스를 사용하여 Print() 함수를 호출합니다.
  19. 함수는 성공적으로 완료되면 값을 반환해야 합니다.
  20. main() 함수 본문의 끝입니다.

예제 2

#include<iostream> 
using namespace std;

class TestClass {
private:
	int real, over;
public:
	TestClass(int rl = 0, int ov = 0) {
		real = rl;
		over = ov;
	}

	TestClass operator + (TestClass const &obj) {
		TestClass result;
		result.real = real + obj.real;
		result.over = over + obj.over;
		return result;
	}
	void print() {
		cout << real << " + i" << over << endl;
	}
};
int main()
{
	TestClass c1(9, 5), c2(4, 3);
	TestClass c3 = c1 + c2;
	c3.print();
}

출력:

과부하 Opera토르 예

다음은 코드의 스크린샷입니다.

과부하 Opera토르 예

코드 설명 :

  1. 기능을 사용하기 위해 iostream 헤더 파일을 프로그램에 포함시킵니다.
  2. 클래스를 호출하지 않고 사용하려면 std 네임스페이스를 프로그램에 포함시킵니다.
  3. TestClass라는 클래스를 만듭니다. {는 클래스 본문의 시작을 표시합니다.
  4. 변수를 비공개로 표시하려면 비공개 액세스 한정자를 사용하세요. 즉, 해당 변수는 클래스 내에서만 액세스할 수 있습니다.
  5. 실수와 초과라는 두 개의 정수 변수를 정의합니다.
  6. 생성자를 public으로 표시하려면 public 액세스 한정자를 사용하세요. 즉, 클래스 외부에서도 액세스할 수 있습니다.
  7. 클래스 생성자를 생성하고 초기화합니다. 변수.
  8. 변수 real의 값을 초기화합니다.
  9. 변수의 값을 초기화합니다.
  10. 생성자 본문의 끝입니다.
  11. + 연산자의 의미를 재정의합니다.
  12. TestClass 유형의 데이터 유형 결과를 생성합니다.
  13. 복소수에는 + 연산자를 사용합니다. 이 줄은 숫자의 실수 부분을 다른 숫자의 실수 부분에 더합니다.
  14. 복소수에는 + 연산자를 사용합니다. 이 줄은 숫자의 허수부를 다른 숫자의 허수부에 더합니다.
  15. 프로그램은 성공적으로 실행되면 변수 결과 값을 반환합니다.
  16. + 연산자의 새로운 의미, 즉 오버로딩의 정의가 끝났습니다.
  17. print() 메서드를 호출합니다.
  18. 더한 후 새로운 복소수를 콘솔에 인쇄합니다.
  19. print() 함수 본문의 끝입니다.
  20. TestClass 클래스 본문의 끝입니다.
  21. main() 함수를 호출합니다.
  22. 더할 실수와 복소수 부분의 값을 전달합니다. c1의 첫 번째 부분은 c2의 첫 번째 부분, 즉 9+4에 더해집니다. c1의 두 번째 부분은 c의 두 번째 부분, 즉 5+3에 더해집니다.
  23. 오버로드된 + 연산자를 사용하여 연산을 수행하고 그 결과를 변수 c3에 저장합니다.
  24. 콘솔에 변수 c3의 값을 인쇄합니다.
  25. main() 함수 본문의 끝입니다.

제품 개요

  • 하나 이상의 의미를 지정할 수 있습니다. C++ 연산자 한 범위에서.
  • 이것을 연산자 오버로딩이라고 합니다.
  • Operator 오버로딩은 사용자 정의 데이터 유형에 대한 연산자의 특별한 의미를 제공합니다.
  • 대부분의 내용을 재정의할 수 있습니다. C++ 연산자 오버로딩을 통한 연산자.
  • 모든 C++ 연산자가 과부하될 수 있습니다.
  • 연산자를 오버로드하려면 피연산자 중 하나 이상이 사용자 정의 객체여야 합니다.
  • 기존 연산자만 오버로드할 수 있습니다. 새 연산자는 오버로드할 수 없습니다.