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

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

Barbara Streisand
Barbara Streisand원래의
2024-10-26 06:57:03635검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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