타자에 대한 질문 - 페이지 5

 
Ilya Malev :
추신, 즉, 이항 연산자를 단항(2항을 1항으로)으로 오버로드한 다음 예, 물론 날짜가 아닌 오버로드를 원했습니다. 유일한 예외는 []

예, MQL에서는 C++에서 무엇을 어떻게 오버로딩할지 하드 코딩되어 있지만 무엇을 오버로딩할지, 어떻게 오버로드하고 호출할지 신경쓰지 마십시오.

 
Igor Makanu :

예, MQL에서는 C++에서 무엇을 어떻게 오버로딩할지 하드 코딩되어 있지만 무엇을 오버로딩할지, 어떻게 오버로드하고 호출할지 신경쓰지 마십시오.

예, mql에는 여전히 많은 제한 사항이 있는 것 같습니다. 개선의 여지가 있습니다. :)

나는 이진 연산을 단항 연산으로 오버로드하는 기능에 신경 쓰지 않을 것입니다(반대의 경우도 마찬가지)

어쨌든 과부하가 걸리면 원래 의미가 가장 자주 손실되므로 사용 논리가 더 이상 이 의미와 연결되지 않습니다. 허용하는 것이 논리적일 것입니다.

 
Ilya Malev :

예, mql에는 여전히 많은 제한 사항이 있는 것 같습니다. 개선의 여지가 있습니다. :)

많이, 그리고 이러한 제한이 나타났다가 사라지고 5 ... 개발자가 때때로 개발 환경을 변경하는 것 같습니다))))

예를 들어, 오버로딩 작업 (연산자) 섹션의 도움말에서 행렬 작업의 예는 지금 컴파일되지 않지만 이전에는 작동했음을 확실히 압니다. 이제 관련된 매개변수 유형에 대한 검사가 있습니다. 오버로딩 작업, 즉 만약 내가 가지고 있다면

int operator*( const int) then int operator*(int) - 컴파일되지 않고 도움말에 컴파일을 중지한 예제가 있었습니다.

 
Ilya Malev :

친애하는 프로그래머 여러분, 저는 오랫동안 이 질문에 대해 머리를 긁적였습니다. 어떻게든 함수의 반환 값을 암시적으로 입력하고 만들 수 있습니까? 메소드 호출이 외부적으로 동일할 때 클래스 메소드 가 다른 유형의 값을 리턴하는 경우.

그리고 당신은 질문할 수 있습니다: 어떤 목적으로 이것을 필요로 합니까? 이것 없이 우주선을 조립하는 것은 불가능합니까?

 
Vasiliy Sokolov :

그리고 당신은 질문할 수 있습니다: 어떤 목적으로 이것을 필요로 합니까? 이것 없이 우주선을 조립하는 것은 불가능합니까?

그리고 당신은 질문할 수 있습니다: 당신은 무엇에 관심이 있습니까?

 

그건 그렇고, 이것은 반환 유형에 대한 과부하도 아닙니다.

일반적으로 이 아이디어는 구현 가능성과 매우 거리가 멉니다.

 
Vasiliy Sokolov :

그리고 당신은 질문할 수 있습니다: 어떤 목적으로 이것을 필요로 합니까? 이것 없이 우주선을 조립하는 것은 불가능합니까?

처음에는 나도 비판적이었고, 그 다음에는 다음과 같이 생각했습니다. 나 자신을 위한 용도를 찾았을 것입니다.

 class Point {
public :
   double price;
   long time;
   operator double () const { return price;}
   operator long () const { return time;}
};

class Array {
   Point p[ 3 ] = {{ 0 , 1 }, { 2 , 3 }, { 4 , 5 }};
public :
   const Point & operator []( unsigned i) { return p[i];}
};

void start()
{
   Array a;
   double d = a[ 2 ];   // d == 4
   long t = a[ 2 ];     // t == 5
}
 
Dmitry Fedoseev :

그건 그렇고, 이것은 반환 유형에 대한 과부하도 아닙니다.

캡틴 요청에 분명히?

 
Ilya Malev :

캡틴 요청에 분명한가요?

If, what - Shift + Alt, 잊어버린 경우.

 
C#에는 명시적 및 암시적 변환이 있습니다. 편리한 설탕과 비슷하지만 매우 암묵적으로 IntelliSense가 침묵합니다. 한 달 안에 어떤 클래스로 변신할 수 있는지 잊어버릴 것입니다. 일반적으로 OOP 게임이지만 귀엽습니다.