MQL5의 OOP에 대한 질문 - 페이지 32

 
Vladimir Tkach :
최근에 다른 컴파일러의 기능에서 일종의 "가비지 컬렉션"을 만나기 시작했습니다. 그것은 무엇입니까?
가비지 수집에 대해 이야기하고 있다면 이것은 삭제가 사용자 대신 수행하지만 변수가 범위를 벗어날 때가 아니라 원할 때 수행하는 것입니다. 그건 그렇고, 소멸자를 직접 호출 할 수 있다는 사실이 아닙니다. 여기서는 언어에 따라 다릅니다. 예리하게 내가 이해하는 한 불가능합니다.
 
Vladimir Simakov :
여기서는 언어에 따라 다릅니다. 제가 알기로는 불가능합니다.

그래서 당신이 할 수 있는 일은 사용되지 않은 개체를 NULL에 할당하는 것뿐입니다. Microsoft 웹 사이트에 가비지 수집기를 강제로 호출하는 방법에 대한 설명서가 있지만 Habré에서 읽은 것 같습니다. 수집기는 예상대로 이 호출에서 정확히 시작됩니다.

저것들. Sharp에서 그들은 가능한 한 프로그래머로부터 메모리 관리를 빼앗았습니다. 모든 것은 OS의 자비에 있었고 컴파일러는 주어졌습니다.

 
Igor Makanu :

그래서 당신이 할 수 있는 일은 사용하지 않는 개체에 NULL을 할당하는 것뿐입니다. Microsoft 웹 사이트에 가비지 수집기를 강제로 호출하는 방법에 대한 설명서가 있지만 Habré에서 읽은 것 같습니다. 수집기는 예상대로 이 호출에서 정확히 시작됩니다.

저것들. Sharp에서 그들은 가능한 한 프로그래머로부터 메모리 관리를 빼앗았습니다. 모든 것은 OS의 자비에 있었고 컴파일러는 주어졌습니다.

정확히. 이제 Sharpe에서 첫 번째 작업을 살펴보고 있으므로 메서드를 새로 추가한 후에는 코드에 삭제가 없기 때문에 끔찍합니다.))).
 
Vladimir Simakov :
정확히. 이제 Sharpe에서 첫 번째 작업을 살펴보고 있으므로 메서드를 새로 추가한 후에는 코드에 삭제가 없기 때문에 끔찍합니다.))).

대신 delete MyObj를 작성하십시오. 그래서 MyObj = null; - 이것은 작동할 것이다

그럼, 연산자를 사용 ?? - 처음에는 어쩐지 낯설었다가, 기계에 써져있다.

그러나 이것이 C++과의 가장 큰 차이점은 아닙니다. C#에서 모든 개체는 참조이며 할당하는 경우 MyObj_1=MyObj_2; 그러면 이것은 복사가 아니지만 포인터가 있습니다 ... 일반적으로 이제 나는 당신을 혼란스럽게 할 것입니다. 여기에 간단한 설명서가 있습니다. 잊어 버린 것이 있으면 거기를 들여다 봅니다.

https://metanit.com/sharp/tutorial/2.16.php


Типы значений и ссылочные типы | C#
  • metanit.com
Ранее мы рассматривали следующие элементарные типы данных: int, byte, double, string, object и др. Также есть сложные типы: структуры, перечисления, классы. Все эти типы данных можно разделить на типы значений, еще называемые значимыми типами, (value types) и ссылочные типы (reference types). Важно понимать между ними различия. Ссылочные типы...
 

OOP의 필요성과 이점을 이해하기 시작한 것 같지만 구현하기가 어렵습니다.

세 가지 다른 변수 세트와 함께 사용해야 하는 클래스가 있습니다. 그러나 그것은 한 가지 일을 합니다. 간단히 말해서 3개의 생성자를 삽입하고 3개의 변수를 선언하고 액세스할 수 있습니다. 그러나 내가 이해하기로는 이것이 완전히 옳은 것은 아닙니다. 또한 두 가지 버전에서 문자열 유형 변수 중 하나는 이름이 다르며 코드의 다른 부분에서 사용됩니다. 물론 변수의 순서를 변경할 수는 있지만 이것이 내가 이해하는 바가 완전히 옳은 것은 아닙니다.

new operator 에 대한 문서를 읽고 있지만 이 상황에서 어떻게 도움이 될 수 있는지 이해가 되지 않습니다. 세 개의 다른 개체 변수와 동일한 개체에 대한 세 개의 포인터 사이의 차이점을 알지 못합니다. 이것은 포인터를 한 번 생성하고 이 개체를 사용하고 불필요하게 삭제한 경우에 유용할 수 있습니다. 그러나 객체가 주기적으로 필요하다면 매번 포인터를 생성하고 삭제하는 것은 완전히 어리석은 일입니다.

일반적으로 도움을 요청합니다. C++에서 OOP에 대한 설명을 읽었지만 mql5 문서보다 훨씬 더 나쁘게 설명되어 있습니다. 조바심내지 마시고 많이 부탁드리겠습니다. 설명이없는 기성 코드도 관심이 없습니다. 나는 이것을 이해하고 "우리와 함께하십시오, 우리처럼 ..."

 
Alexey Viktorov :

OOP의 필요성과 이점을 이해하기 시작한 것 같지만 구현하기가 어렵습니다.

세 가지 다른 변수 세트와 함께 사용해야 하는 클래스가 있습니다. 그러나 그것은 한 가지 일을 합니다. 간단한 방법으로 3개의 생성자를 삽입하고 3개의 변수를 선언하고 액세스할 수 있습니다. 그러나 내가 이해하기로는 이것이 완전히 옳은 것은 아닙니다. 또한 두 가지 버전에서 문자열 유형 변수 중 하나는 이름이 다르며 코드의 다른 부분에서 사용됩니다. 물론 변수의 순서를 변경할 수는 있지만 이것이 내가 이해하는 바가 완전히 옳은 것은 아닙니다.

new operator 에 대한 문서를 읽고 있지만 이 상황에서 어떻게 도움이 될 수 있는지 이해가 되지 않습니다. 세 개의 다른 개체 변수와 동일한 개체에 대한 세 개의 포인터 사이의 차이점을 알지 못합니다. 이것은 포인터를 한 번 생성하고 이 개체를 사용하고 불필요하게 삭제한 경우에 유용할 수 있습니다. 그러나 객체가 주기적으로 필요하다면 매번 포인터를 생성하고 삭제하는 것은 완전히 어리석은 일입니다.

일반적으로 도움을 요청합니다. C++에서 OOP에 대한 설명을 읽었지만 mql5 문서보다 훨씬 더 나쁘게 설명되어 있습니다. 조바심내지 마시고 많이 부탁드리겠습니다. 설명이없는 기성 코드도 관심이 없습니다. 나는 이것을 이해하고 "우리와 함께하십시오, 우리처럼 ..."

세부 정보가 필요합니다. 수업의 과제는 무엇입니까?

 
Koldun Zloy :

세부 정보가 필요합니다. 수업의 과제는 무엇입니까?

경제 캘린더 이벤트 CalendarValueHistory()를 선택하는 것은 비밀이 아닙니다. 한 경우에는 모든 뉴스가 시간 범위에 있습니다. 다른 국가와 다른 시간 범위에서. 세 번째로 기호로. 그러나 근본적인 차이가 있습니까? 프로그래밍 강의는 솔루션을 수행하는 작업 유형에 따라 구분합니까?

나는 최근에 운전 시험에 통과하지 못한 어떤 사람을 만났는데, 운전 수업에서 이 교차로에 가지 않았고 그는 단순히 이 교차로에서 운전하는 법을 모른다고 분개했습니다.

 
이제는 포인터를 만들고 개체를 사용하고 불필요한 것으로 삭제하는 것이 더 나을 수 있다고 생각했습니다. 결국, 시간 범위는 매번 다를 것입니다. 아니면 setter를 통해 기존 객체에 시간을 넣는 것이 여전히 더 쉽습니까?
 
Alexey Viktorov :

다른 국가와 다른 시간 범위에서.

열거된 국가들

생성자에서 일반적인 스위치 케이스를 통해서도 필요에 따라 초기화하고 위의 인터페이스가 있는 템플릿을 보여 줬고 매개 변수에 따라 생성자에서 전략 중 하나를 초기화하고 나머지 작업은 쓰기로 귀결됩니다. 구체적인 전략

https://www.mql5.com/ru/forum/85652/page24#comment_13054686

 
Igor Makanu :

열거된 국가들

생성자에서 일반적인 스위치 케이스를 통해서도 필요에 따라 초기화하고 위의 인터페이스가 있는 템플릿을 보여 줬고 매개 변수에 따라 생성자에서 전략 중 하나를 초기화하고 나머지 작업은 쓰기로 귀결됩니다. 구체적인 전략

https://www.mql5.com/en/forum/85652/page24#comment_13054686

동경... 여기도 인터페이스가 있는 템플릿을 마스터해야 하나요???