MQL5의 OOP에 대한 질문 - 페이지 44 1...373839404142434445464748495051...96 새 코멘트 Sergey Dzyublik 2020.04.18 15:23 #431 Igor Makanu : 동의하지 않는다: "할당 연산자"와 "복사 생성자"가 무엇인지, 어떻게 다른지, 언제 어떻게 호출되는지(명시적 및 묵시적) 정보를 업데이트하십시오. 코드에서 함수의 지역 변수 반환을 노란색으로 강조 표시하면 기본 복사 생성자가 호출됩니다(할당 연산자와 혼동하지 말 것). "전체 데이터 유형"이 불행히도 완전히 명확하지 않으며 코드로 증명하려는 것도 아닙니다... 반복합니다: " MQL의 기본 할당 연산자는 데이터 유형 void를 반환합니다." struct A{ int x,y; }; void OnStart (){ A a, b; Print ( typename (a = b)); // void } Igor Makanu 2020.04.18 15:28 #432 Koldun Zloy : 당신은 잘못. 이것을 반환하는 자신만의 operator=를 정의하고 차이점을 확인하십시오. 과제의 결과가 다시 할당되면 이를 확인할 수 있습니다. 연산자 = 를 정의하면 원래 목표에서 벗어나 기본값 ::=을 호출합니다. 해결되지 않은 문제인 것 같습니다. 세르게이 주블리크 : "전체 데이터 유형"이 불행히도 완전히 명확하지 않으며 코드로 증명하려는 것도 아닙니다... full is full - 데이터 구조 가 저장되며 새 필드를 추가하면 구조 복사를 제어할 필요가 없습니다. Koldun Zloy 2020.04.18 15:32 #433 Igor Makanu : 연산자 = 를 정의하면 원래 목표에서 벗어나 기본값 ::=을 호출합니다. 그런 임무가 정말로 필요합니까? b = c = a; Sergey Dzyublik 2020.04.18 15:48 #434 Igor Makanu : full is full - 데이터 구조 가 저장되며 새 필드를 추가하면 구조 복사를 제어할 필요가 없습니다. 그런 다음 귀하의 용어에 따라 기본 할당 연산자를 호출하면 "불완전한 데이터 유형"이 생성될 수 있습니다. 2019.05.03 일자 버그는 여전히 수정되지 않았습니다: https://www.mql5.com/en/forum/1111/page2451#comment_11556395 Igor Makanu 2020.04.18 16:46 #435 Koldun Zloy : 그런 임무가 정말로 필요합니까? 순전히 이론상 필요합니다. 이것이 일종의 "새로운 엔티티"인지 알고 싶었습니다. 연산자 = 실제 사용을 위해 전혀 필요하지 않습니다. 문제없이 2 개의 연산자로 기록 할 것입니다. 세르게이 주블리크 : 그런 다음 귀하의 용어에 따라 기본 할당 연산자를 호출하면 "불완전한 데이터 유형"이 생성될 수 있습니다. 2019.05.03 일자 버그는 수정되지 않았습니다: https://www.mql5.com/en/forum/1111/page2451#comment_11556395 "내 용어"는 질문하는 것입니다, 나는 불만이 없습니다, 그러나 기본 연산자를 사용하는 의미 = , 구조의 필드만 설명하고 배열의 차원을 포함하여 모든 것이 복사되는 것이 편리합니다(차원이 증가하더라도 - 작동 원리는 ArrayCopy() 처럼) 글쎄, 그것이 버그라면, 지금까지는 Igor Makanu 2020.04.19 19:48 #436 순전히 이론적인 질문. 아마도 SB에서 다음과 같은 생성자 호출을 보았습니다. class A{ public : A(){ Print ( __FUNCTION__ );} }; class B{ public : A a1,a2; B() :a1(),a2() { Print ( __FUNCTION__ ); } }; 이 코드의 차이점은 무엇입니까? class A{ public : A(){ Print ( __FUNCTION__ );} }; class B{ public : A a1,a2; B() { Print ( __FUNCTION__ ); } }; 나는 그것을 인쇄했지만 차이점을 보지 못했습니다. 그리고 조금 더 구체적으로 - 객체 a1 및 a2의 생성자에 대한 강제 호출을 사용할 수 있는 이유 또는 제공하는 것은 무엇입니까? 첫 번째 옵션의 "편의성"은 무엇입니까? Maxim Kuznetsov 2020.04.19 19:57 #437 Igor Makanu : 순전히 이론적인 질문. 아마도 SB에서 다음과 같은 생성자 호출을 보았습니다. 이 코드의 차이점은 무엇입니까? 나는 그것을 인쇄했지만 차이점을 보지 못했습니다. 그리고 조금 더 구체적으로 - 객체 a1 및 a2의 생성자에 대한 강제 호출을 사용할 수 있는 이유 또는 제공하는 것은 무엇입니까? 첫 번째 옵션의 "편의성"은 무엇입니까? 생성자에는 매개변수가 있으며 어떻게든 전달해야 합니다. 즉, 매개변수가 없어도 차이는 없지만 생성자 A(int arg)가 있으면 완전히 다른 옥양목 Igor Makanu 2020.04.19 20:09 #438 Maxim Kuznetsov : 생성자에는 매개변수가 있으며 어떻게든 전달해야 합니다. 즉, 매개변수가 없어도 차이는 없지만 생성자 A(int arg)가 있으면 완전히 다른 옥양목 당신이 아마도 옳을 것입니다 - 일반적으로 작업에 따라 다릅니다 나는 첫 번째 옵션 때문에 어려움을 겪었습니다. 클래스 B의 2개의 생성자 를 사용하려고 할 때 - 두 생성자 모두에서 코드 중복이 발생했습니다. - 제거했습니다. 질문이 나타났습니다. 어디서 보았고 어디에 그렇게 썼습니까?))) Sergey Dzyublik 2020.04.19 22:27 #439 Igor Makanu : 객체 a1 및 a2의 생성자의 강제 호출을 사용할 수 있는 이유는 무엇입니까? 프로세스의 정확한 이름은 "생성자 a1 및 a2의 강제 호출"이 아니라 클래스 필드의 초기화(비정적)입니다. 다음과 같은 경우 필수: - 클래스 상수 필드의 사용; - 클래스 필드에 대한 기본 생성자의 부재; - 생성자 호출을 통하지 않는 다른 초기화 방법으로 클래스 필드 객체가 없는 경우(예: 할당 연산자가 제거됨) -... Dmitry Fedoseev 2020.04.20 00:28 #440 그리고 누군가 이 필드 초기화가 무엇인지 설명합니다. CArray::CArray( void ) : m_step_resize( 16 ), m_data_total( 0 ), m_data_max( 0 ), m_sort_mode(- 1 ) { } 이것보다 더 나은: CArray::CArray( void ) { m_step_resize= 16 ; m_data_total= 0 ; m_data_max= 0 ; m_sort_mode=- 1 ; } 그리고 어쨌든, 요점이 무엇입니까? 1...373839404142434445464748495051...96 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
동의하지 않는다:
"할당 연산자"와 "복사 생성자"가 무엇인지, 어떻게 다른지, 언제 어떻게 호출되는지(명시적 및 묵시적) 정보를 업데이트하십시오.
코드에서 함수의 지역 변수 반환을 노란색으로 강조 표시하면 기본 복사 생성자가 호출됩니다(할당 연산자와 혼동하지 말 것).
"전체 데이터 유형"이 불행히도 완전히 명확하지 않으며 코드로 증명하려는 것도 아닙니다...
반복합니다: " MQL의 기본 할당 연산자는 데이터 유형 void를 반환합니다."
당신은 잘못.
이것을 반환하는 자신만의 operator=를 정의하고 차이점을 확인하십시오.
과제의 결과가 다시 할당되면 이를 확인할 수 있습니다.
연산자 = 를 정의하면 원래 목표에서 벗어나 기본값 ::=을 호출합니다.
해결되지 않은 문제인 것 같습니다.
"전체 데이터 유형"이 불행히도 완전히 명확하지 않으며 코드로 증명하려는 것도 아닙니다...
full is full - 데이터 구조 가 저장되며 새 필드를 추가하면 구조 복사를 제어할 필요가 없습니다.
연산자 = 를 정의하면 원래 목표에서 벗어나 기본값 ::=을 호출합니다.
그런 임무가 정말로 필요합니까?
full is full - 데이터 구조 가 저장되며 새 필드를 추가하면 구조 복사를 제어할 필요가 없습니다.
그런 다음 귀하의 용어에 따라 기본 할당 연산자를 호출하면 "불완전한 데이터 유형"이 생성될 수 있습니다.
2019.05.03 일자 버그는 여전히 수정되지 않았습니다: https://www.mql5.com/en/forum/1111/page2451#comment_11556395
그런 임무가 정말로 필요합니까?
순전히 이론상 필요합니다. 이것이 일종의 "새로운 엔티티"인지 알고 싶었습니다. 연산자 =
실제 사용을 위해 전혀 필요하지 않습니다. 문제없이 2 개의 연산자로 기록 할 것입니다.
그런 다음 귀하의 용어에 따라 기본 할당 연산자를 호출하면 "불완전한 데이터 유형"이 생성될 수 있습니다.
2019.05.03 일자 버그는 수정되지 않았습니다: https://www.mql5.com/en/forum/1111/page2451#comment_11556395
"내 용어"는 질문하는 것입니다, 나는 불만이 없습니다,
그러나 기본 연산자를 사용하는 의미 = , 구조의 필드만 설명하고 배열의 차원을 포함하여 모든 것이 복사되는 것이 편리합니다(차원이 증가하더라도 - 작동 원리는 ArrayCopy() 처럼)
글쎄, 그것이 버그라면, 지금까지는
순전히 이론적인 질문.
아마도 SB에서 다음과 같은 생성자 호출을 보았습니다.
이 코드의 차이점은 무엇입니까?
나는 그것을 인쇄했지만 차이점을 보지 못했습니다. 그리고 조금 더 구체적으로 - 객체 a1 및 a2의 생성자에 대한 강제 호출을 사용할 수 있는 이유 또는 제공하는 것은 무엇입니까?
첫 번째 옵션의 "편의성"은 무엇입니까?
순전히 이론적인 질문.
아마도 SB에서 다음과 같은 생성자 호출을 보았습니다.
이 코드의 차이점은 무엇입니까?
나는 그것을 인쇄했지만 차이점을 보지 못했습니다. 그리고 조금 더 구체적으로 - 객체 a1 및 a2의 생성자에 대한 강제 호출을 사용할 수 있는 이유 또는 제공하는 것은 무엇입니까?
첫 번째 옵션의 "편의성"은 무엇입니까?
생성자에는 매개변수가 있으며 어떻게든 전달해야 합니다.
즉, 매개변수가 없어도 차이는 없지만 생성자 A(int arg)가 있으면 완전히 다른 옥양목
생성자에는 매개변수가 있으며 어떻게든 전달해야 합니다.
즉, 매개변수가 없어도 차이는 없지만 생성자 A(int arg)가 있으면 완전히 다른 옥양목
당신이 아마도 옳을 것입니다 - 일반적으로 작업에 따라 다릅니다
나는 첫 번째 옵션 때문에 어려움을 겪었습니다. 클래스 B의 2개의 생성자 를 사용하려고 할 때 - 두 생성자 모두에서 코드 중복이 발생했습니다. - 제거했습니다. 질문이 나타났습니다. 어디서 보았고 어디에 그렇게 썼습니까?)))
객체 a1 및 a2의 생성자의 강제 호출을 사용할 수 있는 이유는 무엇입니까?
프로세스의 정확한 이름은 "생성자 a1 및 a2의 강제 호출"이 아니라 클래스 필드의 초기화(비정적)입니다.
다음과 같은 경우 필수:
그리고 누군가 이 필드 초기화가 무엇인지 설명합니다.
이것보다 더 나은:
그리고 어쨌든, 요점이 무엇입니까?