메소드 선언 후 const 수정자는 무엇을 의미합니까? - 페이지 2

 
Vasiliy Sokolov :
상수 방법 은 "우리는 최고를 원했지만 항상 그랬듯 결과가 나왔다"는 속담의 또 다른 예입니다. 나는 C ++의 경우 이것이 일반적으로 모토라고 생각합니다. 실질적인 이점은 없지만 OOP 프로그램의 설계를 상당히 복잡하게 만듭니다. 수정된 객체의 유형을 제어하는 데 지속적으로 필요합니다(또한 상수여야 함).

당신이 쓴 것의 예를 들어주실 수 있습니까?

 
Vasiliy Sokolov :
상수 방법 은 "우리는 최고를 원했지만 항상 그랬듯 결과가 나왔다"는 속담의 또 다른 예입니다. 나는 C ++의 경우 이것이 일반적으로 모토라고 생각합니다. 실질적인 이점은 없지만 OOP 프로그램의 설계를 상당히 복잡하게 만듭니다. 수정된 객체의 유형을 제어하는 데 지속적으로 필요합니다(또한 상수여야 함).

))) 나는 Stroustrup의 오래된 책을 가지고 있습니다. 강도가 집에 침입하면 쉽게 싸울 수 있습니다. 무게는 벽돌과 같습니다.)) 노인은 그런 어려움을 언어에 주입했습니다 ..

면접에서 플러스로 오래 몰고 가다가 질문을 하셔서 정확하게 답변을 드리지 못했던 걸로 기억합니다. 그들은 비슷한 탈무드를 가져 와서 읽으십시오. 나는 묻습니다. 직접 사용합니까?

사람들은 그렇게 웃고 있습니다. 모든 것이 정상입니다. 아무도 사용하지 않기 때문에 아무도이 질문에 올바르게 대답하지 못했습니다.

그건 그렇고, 첫 번째 표준이 채택되기 전에도 90 년대 초반의 장점에 대한 책이 어딘가에 있습니다. 종이 표지에 일반 소화 책. 그리고 나서 Ostap은 고통 받았다))

 
Alexey Kozitsyn :

당신이 쓴 것의 예를 들어주실 수 있습니까?

Alex가 예제를 작성했습니다. const 메서드는 클래스의 멤버를 변경할 수 없습니다. 무엇이 문제인 것 같습니까? const 수정자를 사용하지 마십시오. 그러나 상속에 어려움이 있습니다(특히 표준 라이브러리 에서). 디자이너는 가상 const 메서드를 정의했으며 파생 클래스에서 메서드는 데이터에서 무언가를 변경해야 합니다. 여기에는 const로 인한 개그가 있습니다. 그것 없이는 메서드가 재정의되지 않으며 파생된 메서드는 자체 클래스의 데이터를 변경할 수 없습니다.

클래스 메소드에 이러한 수정자를 도입하는 주요 실수는 무엇입니까? 상속의 주요 원칙인 전문화 및 정교화를 위반했다는 사실. 기본 클래스는 파생 클래스 메서드가 내부 데이터로 작업하는 것을 방지합니다. 그리고 이것은 안됩니다.

 
Vasiliy Sokolov :

샤프는 1마일을 나른다))

const를 어렵게 만드는 것은 없습니다. 필요 없습니다. la-la

 
Комбинатор :

샤프는 1마일을 나른다))

나는 그것을 부정하지 않습니다. Sharpe는 참으로 완벽하고 훌륭하고 아름다운 언어입니다.

결합기 :

const를 어렵게 만드는 것은 없습니다. 필요 없습니다. la-la

음, const를 사용하면 항상 나갈 수 있다고 가정해 보겠습니다. 그러나 const가 제공하는 예를 들어 간략하게 설명하는 것이 좋습니다. 그것의 진정한 이점은 무엇입니까? 예를 들어, 손가락을 빨지 않는 것이 좋습니다.

 
Const는 가장 밝은 C++ 은유 중 하나입니다. 먼저 코드 전체에 정교한 트랩을 부지런히 배치한 다음 자신의 트랩에서 빠져 나옵니다. 이것이 C++ 프로그래밍의 전체 프로세스입니다.
 
Vasiliy Sokolov :

...

클래스 메소드에 이러한 수정자를 도입하는 주요 실수는 무엇입니까? 상속의 주요 원칙인 전문화 및 정교화를 위반했다는 사실. 기본 클래스는 파생 클래스 메서드가 내부 데이터로 작업하는 것을 방지합니다. 그리고 이것은 안됩니다.

아마도 이것은 제작자가 일반 사용자에게 제공하는 일부일 것입니다. EA 및 Bid, Ask 변수의 시작 기능과 같습니다.

모든 것을 스스로 할 때 모든 종류의 const로 귀찮게하는 것은 의미가 없습니다.

 
Vasiliy Sokolov :

나는 그것을 부정하지 않는다. Sharpe는 참으로 완벽하고 훌륭하고 아름다운 언어입니다.

...

엄청난. 그러나 그는 완벽함과는 거리가 멀다.
 
Dmitry Fedoseev :
엄청난. 그러나 그는 완벽함과는 거리가 멀다.
샤프가 좋은 것은 그곳의 천재들이 만든 것이 아니라 마지막이기 때문이다. 그 앞에서 30년 동안 그들은 다양한 크기와 기이한 구성의 갈퀴로 자살을 시도했습니다. C++는 이에 대한 훌륭한 테스트 장소 였습니다. 모든 살인 후에 Microsoft의 사람들은 화를 냈습니다 ... 그들이 시도한 개념을 채택하고 처음부터 구문 론적으로 깨끗한 언어를 만들었습니다.
 
그건 그렇고, MetaQuotes는 또한 MQL5를 C++로 갈퀴 같은 괴물로 점진적으로 "개발"할 좋은 기회를 가졌습니다. 그러나 C ++에 대한 깊은 지식(땀, 눈물, 증오가 있어야 함)은 어떤 경우에도 포럼 구식 C ++ 프로그래머의 조언을 따를 수 없다는 것을 이해하는 데 도움이 되었습니다. 따라서 이제 우리는 구문적으로 깨끗하고 다소 강력한 유형의 프로그래밍 언어를 갖게 되었습니다. 그들이 완전히 괴물 같은 유산을 기반으로하면서 그러한 사탕을 만들 수 있었다는 것은 놀라운 일입니다. 그들이 말했듯이 당신은 기술을 마실 수 없습니다.