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

 

뭐가 다른지 말해줘?
다음과 같이 객체 또는 포인터 생성

 class CClass
{
   public :


}CObj, *pCObj;

고전적인 창조에서

CClass  CObj;
CClass *CObj;

프로에서는 다른 행동을 눈치채고 왜인지 흥미로워졌지만 문헌을 찾아보니 첫 번째 검색 방법을 뭐라고 불러야 할지조차 모르겠다.

 
Roman :

뭐가 다른지 말해줘?
다음과 같이 객체 또는 포인터 생성

고전적인 창조에서

프로에서는 다른 행동을 눈치채고 왜인지 흥미로워졌지만 문헌을 찾아보니 첫 번째 검색 방법을 뭐라고 불러야 할지조차 모르겠다.

MQL에서도 다르지 않고 프로에서도 마찬가지입니다.

 
Koldun Zloy :

MQL에서도 다르지 않고 프로에서도 마찬가지입니다.

질문을 이해하지 못했습니다. 차이점은 언어가 아니라 선언 자체에 있습니다.
첫 번째 예에서 개체의 동작을 이해하지 못합니다.
내 생각에는 개체도 스택에서 생성되고 클래스 소멸자 가 호출된 후 소멸되며 개체는 코드에서 전역적으로 표시됩니다.
이것이 내가 명확히하고 싶었던 것입니다. 첫 번째 방법의 동작은 무엇입니까?
내 추측이 맞습니까?
Google에서 찾을 수 있도록 이름이 무엇입니까?

(mql이 아니라 C++에서) 개체를 다르게 생성하면 사용된 메서드의 동작이 예상대로 변경되지 않는다는 것을 알았기 때문에(mql이 아니라 C++에서)

 
Roman :

질문을 이해하지 못했습니다. 차이점은 언어가 아니라 선언 자체에 있습니다.
첫 번째 예에서 개체의 동작을 이해하지 못합니다.
내 생각에는 개체도 스택에서 생성되고 클래스 소멸자 가 호출된 후 소멸되며 개체는 코드에서 전역적으로 표시됩니다.
이것이 내가 명확히하고 싶었던 것입니다. 첫 번째 방법의 동작은 무엇입니까?
내 추측이 맞습니까?
구글링 할 수 있게 이름이 뭔가요?

개체를 다르게 생성하면 사용된 메서드의 동작이 예상대로 변경되지 않는다는 사실을 알았기 때문입니다.

질문을 이해했습니다. 광고에는 차이가 없습니다.

 
Koldun Zloy :

질문을 이해했습니다. 광고에는 차이가 없습니다.

차이는 범위에서 가장 가능성이 높습니다.
한 파일의 첫 번째 예제는 항상 전역적으로 표시되고 두 번째 예제 또는 새 예제는 함수에서 숨길 수 있습니다.

 
Roman :

차이는 범위에서 가장 가능성이 높습니다.
한 파일의 첫 번째 예제는 항상 전역적으로 표시되고 두 번째 예제 또는 새 예제는 함수에서 숨길 수 있습니다.

여기서 차이점은 선언 방법이 아니라 어디에 있습니다.

 
Koldun Zloy :

여기서 차이점은 선언 방법이 아니라 어디에 있습니다.

저도 논리적 추론의 방법으로 같은 결론에 도달했습니다 :))
내 생각이 맞는지 확인하고 싶었다. 설명해주셔서 감사합니다.

 
Vladimir Simakov :
   lotDigits= MathMax (-( int ) MathFloor ( MathLog10 (lotStep)), 0 );

선택하면 소수점 이하 자릿수를 계산하는 이 코드가 올바르게 작동하지 않습니다.

원칙적으로 내 생각도 항상 올바르게 생각하는 것은 아닙니다.

확인할 스크립트:

 void OnStart ()
  {
   double l= 0.0 ;
   for ( int i= 0 ; i< 100 ; i++)
     {
       Print (l, " ---> LotDigits / MyDigits = " ,LotDigits(l), " / " ,MyDigits(l));
      l+= 0.003 ;
     }
  }
//+------------------------------------------------------------------+
int LotDigits( double value)
  {
   return ( MathMax (-( int ) MathFloor ( MathLog10 (value)), 0 ));
  }
//+------------------------------------------------------------------+
int MyDigits( double v)
  {
   long i= 10000000 ,k= long (v/ 0.0000001 );
   int d= 0 ;
   while (d< 7 && k%i> 0 )
     {
      i/= 10 ;
      d++;
     }
   return (d);
  }
//+------------------------------------------------------------------+

스크립트 로그 첨부

파일:
20190829.log  9 kb
 
Roman :

뭐가 다른지 말해줘?
다음과 같이 객체 또는 포인터 생성

고전적인 창조에서

프로에서는 다른 행동을 눈치채고 왜인지 흥미로워졌지만 문헌을 찾아보니 첫 번째 검색 방법을 뭐라고 불러야 할지조차 모르겠다.

저도 개인적으로 큰 차이는 못느끼지만 그런 글의 스타일 자체가 상당히 위험한 것 같습니다.

포인터 - 생성 시 즉시 NULL이거나 실제 개체에 대한 포인터여야 합니다. 이 포인터가 저장될 작은 메모리 영역이 생성됩니다(null 값 또는 일반 포인터 사용).

객체 선언 - 전체 객체를 생성하고 생성자가 호출되는 동안 메모리가 할당됩니다.

 
Igor Makanu :

선택하면 소수점 이하 자릿수를 계산하는 이 코드가 올바르게 작동하지 않습니다.

원칙적으로 내 생각도 항상 올바르게 생각하는 것은 아닙니다.

확인할 스크립트:

스크립트 로그 첨부

예를 들어 0.15와 같이 많지는 않을 것이라고 가정합니다. 적어도 나는 그것에 대해 들어본 적이 없다. 갑자기 언제 보이면 다시 하겠습니다.
사유: