예, 그리고 마침내 B 다음에 이 별표를 제거하면 눈이 아파요) 이 버그로 모든 것이 이미 파악되었습니다.
개인적으로 별표가 없는 객체 변수가 눈을 아프게 합니다)) 나쁜 실수 중 하나는 *a 대신 A=new A라고 쓰고 무슨 일이 일어나는지 오랫동안 이해하지 못하는 것입니다) 반대로 모든 것이 올바르게 작동하는 것을 보여주었습니다 조언을 따르고 개인 작업을 선언하면 =&. 이 경우 편집기에서 즉시 오류가 발생합니다. 앞으로도 항상 이렇게 할게요 :)
특별히 고려하여 재확인한 경우
괜찮아 DJ
어떤 컴파일러가 있습니까?
나는 VS 2010에 있습니다 :
바이너리 '=': 'A' 유형의 오른쪽 피연산자를 사용하는 연산자를 찾을 수 없습니다(또는 허용되는 변환이 없음).
ps. "고려하다"가 무슨 뜻인지 정말 이해가 안 가나요? 기본 클래스를 파생 클래스로 암시적으로 복사할 수 있는 가능성에 관한 것이었습니다.
Visual Studio에서 내 예제 도 작동합니다. 명시적 복사 연산자를 의미하고 코드로 설명했습니다.
혹시라도 신경질적으로 금지하면 노골적으로 동시에 금지되는 일이 무심코 금지되는 일이 없도록 썼습니다
Visual Studio에서 내 예제 도 작동합니다. 명시적 복사 연산자를 의미하고 코드로 설명했습니다.
명시적인 운영자에 대한 이야기는 없었습니다. 나는 당신이 "좁은 생각"이라고 부르는 이 경우에 암시적 연산자의 허용 불가에 대해 이야기했지만 이것은 그렇지 않습니다.
복사하려면 C++에서 먼저 명시적으로 b를 원하는 유형으로 캐스팅해야 합니다. 이러한 복사는 객체 캡슐화를 위반하는 것입니다. 그러므로 어떤 암시도 있어서는 안 됩니다.
명시적 복사 연산자를 의미하고 코드로 설명했습니다.
나는 컴파일러가 그것들을 (코드의 맥락에서) 명시적 및 암시적 것으로 분리하는지 의심합니다. 그렇지 않으면 쉽게 고칠 수 있습니다.
그건 그렇고 연산자 유형으로 모든 것이 잘 된 것 같습니다.
먼저 연산자 B:: 를 찾고, 없으면 A:: 에서 이미 찾고, 거기에도 없으면 의무가 완료된 것으로 간주하고 아무 것도 하지 않습니다(포인터가 결국 고장난) :)
그것이 거기에 없다면 그것은 의무가 완료된 것으로 간주하고 아무 것도하지 않습니다 (포인터가 결국 파손되었지만) :)
왜 아무것도 하지 않는 걸까요? 암시적(자동) operator=(const A&)를 사용하여 복사하는데, 그렇게 해서는 안 됩니다.
예, 그리고 마침내 B 다음에 이 별표를 제거하면 눈이 아파요) 이 버그로 모든 것이 이미 파악되었습니다.
예, 그리고 마침내 B 다음에 이 별표를 제거하면 눈이 아파요) 이 버그로 모든 것이 이미 파악되었습니다.
개인적으로 별표가 없는 객체 변수가 눈을 아프게 합니다)) 나쁜 실수 중 하나는 *a 대신 A=new A라고 쓰고 무슨 일이 일어나는지 오랫동안 이해하지 못하는 것입니다) 반대로 모든 것이 올바르게 작동하는 것을 보여주었습니다 조언을 따르고 개인 작업을 선언하면 =&. 이 경우 편집기에서 즉시 오류가 발생합니다. 앞으로도 항상 이렇게 할게요 :)
나는 double의 기능을 알고 있지만 덧셈 순서를 변경하면( 상대적으로 매우 다른 숫자는 제외) 결과가 달라질 것입니다! 여기에서 무슨 일이 일어나고 있는지 바보에게 설명하십시오.
소스에서는 맨 아래 두 줄만 보면 됩니다.
개발자를 위한 오류입니다.
스크립트가 컴파일되지 않고 이유를 확인))). 첨부파일을 활용하시기 바랍니다.
같은 파일: