>백엔드 개발 >C++ >C++ 컴파일 오류: 오버로드된 연산자에는 동일한 수의 매개변수가 있어야 합니다. 이를 수정하는 방법은 무엇입니까?

C++ 컴파일 오류: 오버로드된 연산자에는 동일한 수의 매개변수가 있어야 합니다. 이를 수정하는 방법은 무엇입니까?

WBOY
WBOY원래의
2023-08-22 11:12:131606검색

C++ 컴파일 오류: 오버로드된 연산자에는 동일한 수의 매개변수가 있어야 합니다. 이를 수정하는 방법은 무엇입니까?

C++ 프로그래밍 과정에서는 다양한 오류가 자주 발생하며, 그 중 컴파일 오류가 매우 흔합니다. 그 중 연산자의 매개변수 개수가 동일해야 하는 오버로딩은 매우 흔한 오류입니다. 오늘은 이 오류의 원인과 수정 방법에 대해 알아 보겠습니다.

먼저 연산자 오버로딩이 무엇인지 이해해야 합니다. 연산자는 C++에서 매우 중요한 개념입니다. 특정 작업을 수행하는 데 사용되는 기호 또는 특정 함수입니다. C++에는 +, -, *, / 등과 같은 몇 가지 내장 연산자가 있으며 이러한 내장 연산자를 사용하여 기본 데이터 유형에 대해 연산을 수행할 수 있습니다. 그러나 사용자 정의 유형의 경우 이러한 연산자를 오버로드하여 자체 유형에서 작동할 수도 있습니다.

예를 들어, 2개의 멤버 변수, 즉 실수 부분과 허수 부분을 포함하는 Complex(복수)라는 클래스를 정의합니다. 연산자 "+", "-", "*", "/" 등을 오버로드하여 두 복소수 간의 덧셈, 뺄셈, 곱셈 및 나눗셈 연산을 구현할 수 있습니다. 이러한 방식으로 C++의 내장 연산자를 사용하여 사용자 정의 유형을 조작할 수 있는데 이는 매우 유연하고 편리합니다.

그러나 연산자 오버로딩을 수행할 때는 몇 가지 규칙을 따라야 한다는 점에 유의해야 합니다. 그 중 하나는 오버로드된 연산자가 동일한 수의 매개변수를 가져야 한다는 것입니다. 즉, 이항 연산자(두 개의 피연산자 필요)를 정의하는 경우 연산자 오버로드 함수에서 두 개의 매개 변수를 정의해야 합니다. 그렇지 않으면 컴파일 오류가 발생합니다.

예를 들어 Complex 클래스에서 "+" 연산자를 오버로드하면 클래스에 다음 함수를 정의합니다.

Complex operator + (const Complex& c)
{
    Complex result(real+c.real, imag+c.imag);
    return result;
}

위 코드에서는 두 개의 연산 번호가 필요한 이진 연산자 "+"를 정의합니다. 따라서 두 개의 매개변수도 정의됩니다. 첫 번째 매개변수는 현재 개체(여기서는 이 포인터)이고 두 번째 매개변수는 Complex 개체 c입니다.

그러나 다음과 같이 함수를 정의하면(단 하나의 매개변수만 정의됨)

Complex operator + (const Complex& c)
{
    Complex result(real+c.real, imag+c.imag);
    return result;
}

다음과 같은 컴파일 오류가 발생합니다. "오버로드된 연산자에는 동일한 수의 매개변수가 있어야 합니다."

이 시점에서 우리가 해야 할 일은 이 오류를 수정하는 것뿐입니다. 연산자 오버로드 함수에서 매개변수 개수가 연산자가 요구하는 매개변수 개수와 동일하도록 매개변수를 추가하거나 삭제해야 합니다.

위 예에서는 매개변수 개수가 운영자가 요구하는 매개변수 개수와 동일하도록 매개변수 하나만 추가하면 됩니다. 수정된 코드는 다음과 같습니다.

Complex operator + (const Complex& c1, const Complex& c2)
{
    Complex result(c1.real+c2.real, c1.imag+c2.imag);
    return result;
}

위 코드에서는 연산자가 요구하는 매개변수 개수와 동일하도록 매개변수 c2를 추가했습니다. 이렇게 하면 성공적으로 컴파일하고 실행할 수 있습니다.

요약하자면, C++ 컴파일 오류: 오버로드된 연산자는 동일한 수의 매개변수를 가져야 합니다. 왜냐하면 연산자를 오버로드할 때 정의된 매개변수 수가 기호에 필요한 매개변수 수와 동일한지 확인해야 하기 때문입니다. 이 오류를 해결하려면 연산자 오버로드 함수에 매개변수를 추가하거나 제거하여 매개변수 수가 연산자에 필요한 매개변수 수와 동일하도록 해야 합니다.

위 내용은 C++ 컴파일 오류: 오버로드된 연산자에는 동일한 수의 매개변수가 있어야 합니다. 이를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.