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; }
출력:
다음은 코드의 스크린샷입니다.
코드 설명 :
- 해당 기능을 사용하려면 코드에 iostream 헤더 파일을 포함합니다.
- 클래스를 호출하지 않고 사용하려면 프로그램에 std 네임스페이스를 포함하세요.
- TestClass라는 클래스를 만듭니다.
- 클래스 멤버를 비공개적으로 액세스 가능한 것으로 표시하는 비공개 액세스 한정자를 사용하세요.
- 정수 변수 개수를 만듭니다. 이 변수는 비공개적으로 액세스할 수 있습니다.
- 클래스 멤버를 비공개적으로 액세스 가능한 것으로 표시하는 public 액세스 한정자를 사용하세요.
- 클래스 생성자를 사용하여 변수 카운터를 5로 초기화합니다.
- — 연산자의 의미를 오버로드합니다.
- 연산자는 변수 x의 값을 1 감소시킵니다.
- 연산자 오버로딩 섹션의 끝입니다. 연산자에 새 이름이 지정되었습니다.
- Display() 함수라는 함수를 정의합니다.
- Display() 함수가 호출되면 콘솔에 다른 텍스트와 함께 변수 개수의 값을 인쇄합니다. }는 Display() 함수 본문의 끝을 표시합니다.
- 수업 본문이 끝납니다.
- main() 함수를 호출합니다. 프로그램 로직은 이 기능 내에 추가되어야 합니다.
- TestClass 클래스의 인스턴스를 생성하고 이름을 tc로 지정합니다.
- 이는 void 연산자 –() 함수를 호출합니다.
- TestClass 클래스의 입장을 사용하여 Display() 함수를 호출합니다.
- 함수는 성공적으로 완료되면 값을 반환해야 합니다.
- main() 함수 본문의 끝입니다.
다양한 접근 방식 Opera토르 과부하 C++
다음 유형의 함수를 구현하여 연산자 오버로딩을 수행할 수 있습니다.
- 회원 기능
- 비회원 기능
- 친구 기능
- 연산자 오버로딩 함수는 왼쪽 피연산자가 클래스의 객체인 경우 멤버 함수가 될 수 있습니다.
- 왼쪽 피연산자가 다른 경우 Opera토르 오버로딩 함수는 비멤버 함수여야 합니다.
private 및 protected 클래스 멤버에 접근해야 하는 경우 연산자 오버로딩 함수를 friend 함수로 만들 수 있습니다.
모두 가능 C++ Opera과부하가 걸리나요?
아니요. 있습니다. C++ 오버로드가 불가능한 연산자.
그들은 다음과 같습니다 :
- :: -범위 결정 연산자
- ?: -삼항 연산자.
- . -멤버 선택기
- Sizeof 연산자
- * -멤버 포인터 선택기
상황이 기억하기
- 연산자 오버로딩을 사용하면 사용자 정의 유형(객체, 구조체)에 대해서만 연산자 작동 방식을 재정의할 수 있습니다. 내장 유형(float, char, int 등)에는 사용할 수 없습니다.
- = 및 & C++ 연산자는 기본적으로 오버로드됩니다. 예를 들어, = 연산자를 사용하여 같은 Class의 객체를 직접 복사할 수 있습니다.
- Operator 우선순위는 연산자의 연관 및 우선순위를 변경하지 않습니다. 그러나 괄호를 사용하여 평가 순서를 변경할 수 있습니다.
- 오버로드할 수 없는 네 가지 연산자가 있습니다. 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; }
출력:
다음은 코드의 스크린샷입니다.
코드 설명 :
- 해당 기능을 사용하려면 코드에 iostream 헤더 파일을 포함합니다.
- 클래스를 호출하지 않고 사용하려면 프로그램에 std 네임스페이스를 포함하세요.
- 라는 클래스를 생성합니다. Opera토르오버로드.
- 클래스 멤버를 비공개적으로 액세스 가능한 것으로 표시하는 비공개 액세스 한정자를 사용하세요.
- 정수 변수 x를 만듭니다. 이 변수는 비공개적으로 액세스할 수 있습니다.
- 클래스 멤버를 비공개적으로 액세스 가능한 것으로 표시하는 public 액세스 한정자를 사용하세요.
- 클래스 생성자를 사용하여 변수 x를 10으로 초기화합니다.
- ++ 연산자의 의미를 오버로드합니다.
- 연산자는 변수 x의 값을 2만큼 증가시킵니다.
- 연산자 오버로딩 섹션의 끝입니다. 연산자에 새 이름이 지정되었습니다.
- Print() 함수를 호출합니다.
- Print() 함수가 호출되면 콘솔의 다른 텍스트와 함께 변수 x의 값을 인쇄합니다.
- Print() 함수 본문의 끝입니다.
- 수업 본문이 끝납니다.
- main() 함수를 호출합니다. 프로그램 로직은 이 기능 내에 추가되어야 합니다.
- 의 인스턴스를 생성합니다. Operaov라는 torOverload 클래스입니다.
- 이는 void operator ++() 함수를 호출합니다.
- 의 입장을 활용하라 OperatorOverload 클래스를 사용하여 Print() 함수를 호출합니다.
- 함수는 성공적으로 완료되면 값을 반환해야 합니다.
- 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(); }
출력:
다음은 코드의 스크린샷입니다.
코드 설명 :
- 기능을 사용하기 위해 iostream 헤더 파일을 프로그램에 포함시킵니다.
- 클래스를 호출하지 않고 사용하려면 std 네임스페이스를 프로그램에 포함시킵니다.
- TestClass라는 클래스를 만듭니다. {는 클래스 본문의 시작을 표시합니다.
- 변수를 비공개로 표시하려면 비공개 액세스 한정자를 사용하세요. 즉, 해당 변수는 클래스 내에서만 액세스할 수 있습니다.
- 실수와 초과라는 두 개의 정수 변수를 정의합니다.
- 생성자를 public으로 표시하려면 public 액세스 한정자를 사용하세요. 즉, 클래스 외부에서도 액세스할 수 있습니다.
- 클래스 생성자를 생성하고 초기화합니다. 변수.
- 변수 real의 값을 초기화합니다.
- 변수의 값을 초기화합니다.
- 생성자 본문의 끝입니다.
- + 연산자의 의미를 재정의합니다.
- TestClass 유형의 데이터 유형 결과를 생성합니다.
- 복소수에는 + 연산자를 사용합니다. 이 줄은 숫자의 실수 부분을 다른 숫자의 실수 부분에 더합니다.
- 복소수에는 + 연산자를 사용합니다. 이 줄은 숫자의 허수부를 다른 숫자의 허수부에 더합니다.
- 프로그램은 성공적으로 실행되면 변수 결과 값을 반환합니다.
- + 연산자의 새로운 의미, 즉 오버로딩의 정의가 끝났습니다.
- print() 메서드를 호출합니다.
- 더한 후 새로운 복소수를 콘솔에 인쇄합니다.
- print() 함수 본문의 끝입니다.
- TestClass 클래스 본문의 끝입니다.
- main() 함수를 호출합니다.
- 더할 실수와 복소수 부분의 값을 전달합니다. c1의 첫 번째 부분은 c2의 첫 번째 부분, 즉 9+4에 더해집니다. c1의 두 번째 부분은 c의 두 번째 부분, 즉 5+3에 더해집니다.
- 오버로드된 + 연산자를 사용하여 연산을 수행하고 그 결과를 변수 c3에 저장합니다.
- 콘솔에 변수 c3의 값을 인쇄합니다.
- main() 함수 본문의 끝입니다.
제품 개요
- 하나 이상의 의미를 지정할 수 있습니다. C++ 연산자 한 범위에서.
- 이것을 연산자 오버로딩이라고 합니다.
- Operator 오버로딩은 사용자 정의 데이터 유형에 대한 연산자의 특별한 의미를 제공합니다.
- 대부분의 내용을 재정의할 수 있습니다. C++ 연산자 오버로딩을 통한 연산자.
- 모든 C++ 연산자가 과부하될 수 있습니다.
- 연산자를 오버로드하려면 피연산자 중 하나 이상이 사용자 정의 객체여야 합니다.
- 기존 연산자만 오버로드할 수 있습니다. 새 연산자는 오버로드할 수 없습니다.