오류, 버그, 질문 - 페이지 1892

 
fxsaber :
이와 같은 또 다른 질문
프로텍터 작업.
 
Renat Fatkhullin :
프로텍터 작업.
농담이면 재미있다)) 그렇지 않다면 프로그래밍에서 보호자가 무엇인지 설명하십시오
 
Konstantin :
프로그래밍에서 프로텍터가 무엇인지 설명해주세요
디컴파일러를 사라지게 한 것
 
Renat Fatkhullin :

예, 다음은 귀하의 질문을 보여주는 예입니다.

및 출력:

먼저 해결되지 않은 캐스팅을 아래에서 위로 확인하고 NULL을 얻습니다. 괜찮은.

그런 다음 우리는 CLASS2 객체를 생성하고 그것에 대한 참조를 부모 클래스에 할당합니다(여기서 역학에서 환경은 CLASS2 객체의 기본 유형이 메타 정보에 저장되어 있음을 알고 있음을 이해하는 것이 중요합니다). 다음으로 (귀하의 질문에 한함) CLASS1 링크에서 CLASS2로 동적으로 캐스트합니다(원본 개체의 메타 정보를 기반으로 변환 권한 확인 포함).

캐스팅 결과를 확인하고 변수 i = 1에 씁니다. 마지막에는 처음 생성된 객체 를 참조하여 i 값을 표시합니다.

모든 것이 사양에 따라 올바르게 작동합니다(C++ 자체 사양에 대한 dynamic_cast 포함).

설명 감사합니다. 이제 MQL의 유형 캐스팅에 대해 명확한 것 같습니다)) 그러나 dynamic_cast 가 생성된 이유는 명확하지 않습니다. 어떤 경우에도 아래에서 위로 캐스팅할 수 없고 위에서 아래로 캐스팅 없이는 할 수 있습니다. 다이나믹 캐스트 ? 여기에 약간의 미묘함이 있는데 내가 이해하지 못했습니까?
 
Konstantin :
설명 감사합니다. 이제 MQL의 유형 캐스팅에 대해 명확한 것 같습니다)) 그러나 dynamic_cast 가 생성된 이유는 명확하지 않습니다. 어떤 경우에도 아래에서 위로 캐스팅할 수 없고 위에서 아래로 캐스팅 없이는 할 수 있습니다. 다이나믹 캐스트 ? 여기에 약간의 미묘함이 있는데 내가 이해하지 못했습니까?

코드와 내 설명을 다시 읽으십시오.

또한 캐스트 화자가 원래 생성된 객체 의 메타 정보를 기반으로 캐스트 스피커가 아래에서 위로 캐스팅을 안전하게 올릴 수 있는 방법을 보여줍니다. 개체가 자식에서 생성된 다음 부모 클래스의 참조로 변환된 경우 메타 정보(원래 개체는 실제로 자식임)를 기반으로 이 참조를 자식으로 안전하게 변환할 수 있습니다.

일반적으로 다양한 하위 항목의 개체가 상위 클래스에 대한 참조 목록/배열에 추가된 다음 검색되어 하나 또는 다른 하위 항목으로 안전하게 캐스팅될 때 사용됩니다. 캐스트가 NULL로 평가되면 개체는 요청된 자식이 아니므로 처리해서는 안 됩니다.

 
Renat Fatkhullin :

코드와 내 설명을 다시 읽으십시오.

또한 캐스트 화자가 원래 생성된 객체 의 메타 정보를 기반으로 캐스트 스피커가 아래에서 위로 캐스팅을 안전하게 올릴 수 있는 방법을 보여줍니다. 개체가 자식에서 생성된 다음 부모 클래스의 참조로 변환된 경우 메타 정보(원래 개체는 실제로 자식임)를 기반으로 이 참조를 자식으로 안전하게 변환할 수 있습니다.

일반적으로 다양한 하위 항목의 개체가 상위 클래스에 대한 참조 목록/배열에 추가된 다음 검색되어 하나 또는 다른 하위 항목으로 안전하게 캐스팅될 때 사용됩니다. 캐스트가 NULL로 평가되면 개체는 요청된 자식이 아니므로 처리해서는 안 됩니다.

코드를 읽었지만 다음과 같습니다.

CLASS2 *my_ptr2= dynamic_cast <CLASS2 *>(my_ptr);

이와 유사하지 않음:

CLASS2 *my_ptr2=(CLASS2*)my_ptr;

나는 dynamic_cast 를 사용하여 코드를 실행할 때 오류가 발생하지 않는다는 점을 제외하고는 dynamic_cast 사용의 미묘함을 파악할 수 없습니다. dynamic_cast 는 오류 시 NULL 을 반환합니다.

 
Konstantin :

코드를 읽었지만 다음과 같습니다.

이와 유사하지 않음:

나는 dynamic_cast 를 사용하여 코드를 실행할 때 오류가 발생하지 않는다는 점을 제외하고는 dynamic_cast 사용의 미묘함을 파악할 수 없습니다. dynamic_cast 는 오류 시 NULL 을 반환합니다.

C++에서 dymanic_cast 사양을 Google에 검색하는 것이 좋습니다.

이것은 평범함입니다.

 
PC 리소스를 클라우드에 배포할 때 게임을 시작할 때 충돌이 발생합니다 - 게임 " Call of Duty: Black   작전   III "충돌 - 1 에이전트가 관련되었습니다. 에이전트는 최소 우선 순위를 가졌습니다. 에이전트는 16개 중 3.5GB의 메모리를 소비했습니다. 일반적으로 문제가 없었을 것입니다. 비활성 에이전트를 사용하면 게임이 정상적으로 재생됩니다. 에이전트는 다른 프로그램과의 호환성?
 
-Aleks- :
PC 리소스를 클라우드에 배포할 때 게임을 시작할 때 충돌이 발생합니다 - 게임 " Call of Duty: Black   작전   III "충돌 - 1 에이전트가 관련되었습니다. 에이전트는 최소 우선 순위를 가졌습니다. 에이전트는 16개 중 3.5GB의 메모리를 소비했습니다. 일반적으로 문제가 없었을 것입니다. 비활성 에이전트를 사용하면 게임이 정상적으로 재생됩니다. 에이전트는 다른 프로그램과의 호환성?

어떤 이유에서인지 즉시 장난감에 버그가 있을 수 있으며 프로그램이 4GB 이상의 주소 공간에 로드될 때 64비트 머신에서 작업하는 특성과 관련이 있다는 아이디어가 떠올랐습니다.
 
Sergey Dzyublik :

어떤 이유에서인지 즉시 장난감에 버그가 있을 수 있으며 프로그램이 4GB 이상의 주소 공간에 로드될 때 64비트 머신에서 작업하는 특성과 관련이 있다는 아이디어가 떠올랐습니다.

저것들. 이 가설을 테스트하려면 RAM을 4GB 이상으로 채우고 게임을 시작해야 합니다. 제 아들이 어떻게 충분히 플레이하는지 시도해 보겠습니다.