> 백엔드 개발 > C++ > 가상 연산자를 구현하는 방법

가상 연산자를 구현하는 방법

Barbara Streisand
풀어 주다: 2024-10-26 06:57:03
원래의
638명이 탐색했습니다.

How Can You Implement a Virtual `operator

가상 운영자의 극복<< 수수께끼

가상 << 연산자에 대해 다음 코드를 사용하면 컴파일러 오류가 발생합니다.

<code class="cpp">virtual friend ostream &amp; operator<<(ostream&amp; os,const Advertising&amp; add);</code>
로그인 후 복사

문제의 근본

정의된 연산자<< 무료 기능으로, 수신자 객체가 없기 때문에 가상 자격을 비활성화합니다. 원하는 가상 기능을 구현하려면 연산자를 클래스 멤버로 정의해야 합니다.

직접 정의의 문제

연산자 정의<< 반원으로서 다른 문제를 제기합니다. 피연산자가 반전되어 객체를 출력하려고 할 때 문제가 발생합니다.

<code class="cpp">MyClass myObject;
myObject << cout; // Legal but not our intended usage</code>
로그인 후 복사

해결책: 간접 접근 방식

이러한 과제를 탐색하려면 추가 가상 접근 방식을 도입하세요. 함수:

<code class="cpp">class MyClass {
public:
    virtual void print(ostream&amp; where) const;
};</code>
로그인 후 복사

그런 다음 연산자를 재정의합니다.<< 새로운 가상 기능을 활용하여 무료 기능으로:

<code class="cpp">ostream&amp; operator<< (ostream&amp; out, const MyClass&amp; mc) {
    mc.print(out);
    return out;
}</code>
로그인 후 복사

이 설정을 통해 운영자는<< print() 함수를 통해 서브클래스의 출력 동작을 사용자 정의하는 동시에 올바른 매개변수 순서를 유지하는 자유 함수입니다.

위 내용은 가상 연산자를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿