メソッド宣言の後の const 修飾子の意味 - ページ 2

 
Vasiliy Sokolov:
コンスタント・メソッドも、「もっとうまくやろうと思ったのに、結局いつもと同じになってしまった」という諺の一例です。これは、C++のモットーでもあると思うんです。実用性はありませんが、変更されるオブジェクトの型を常に制御する必要があるため、OOPプログラムの設計が非常に複雑になります(それも一定である必要があります)。

何を書いているのか、例を挙げてみましょうか。

 
Vasiliy Sokolov:
定法とは、まさに「より良いものを求めたが、いつも通りになってしまった」という諺のことである。C++のモットーでもあると思うのですが。実用性はありませんが、変更されるオブジェクトの型を常に制御する必要があるため(それも一定でなければならない)、OOPプログラムの設計を著しく複雑にしています。

)))ストロストラップの古い本が転がっているんだ、泥棒が家に押し入ったらこれでやっつけられるよ、レンガみたいな重さなんだ ))老人の舌はこんなに苦労していたのか。

昔、面接で質問されて正確に答えられず、追いかけ回されたことを思い出します。こんな本を持ってきて、読んで、「自分で使っているんですか?

と聞いたら、「自分で使っているのか」と言われた。

ちなみに、最初の規格が採用される前の90年代前半のプラスに関する本があります。普通の消化しやすい文庫本です。と思ったら、オスタップが調子に乗っていた ))

 
Alexey Kozitsyn:

何を書いているのか、例を教えてください。

アレクセイは例を書いた。定数メソッドは、そのクラスのメンバを変更することはできません。何が問題だと思われますか?ただ、const修飾子は使わないでください。しかし、(特に標準ライブラリからの)継承では、設計者が仮想メソッドconstを定義したのに、派生クラスではメソッドのデータを何か変更する必要があり、constのためにプラグインが必要になるという困難があります。これがないと、メソッドはオーバーライドされません。また、これがあると、派生メソッドは自身のクラスデータを変更することができなくなります。

クラスメソッドにこのようなモディファイアを導入することの主な間違いは何でしょうか?継承の大原則である「特殊化・洗練化」が侵されているのです。ベースクラスは、派生クラスのメソッドがその内部データを操作することを禁止しています。そして、そんな事態はあってはならないことです。

 
Vasiliy Sokolov:

シャープの悪臭が漂う ))

コンストラクションは何もない、ぼやく必要はない。

 
Комбинатор:

シャープの悪臭が漂う ))

否定はしませんが。シャープは本当に完璧で、偉大で、美しい言語です。

コンビナート です。

コンストは何もこじらせない、ボケない

OK、人はいつでもconstを取り除くことができるとしよう。しかし、constが何をするものなのか、例を挙げて簡単に説明しませんか?その本当の使い道は?例によって、そしてできれば何もないところから書かないでほしい。

 
コンストラストは、C++の印象的なメタファーの1つです。まず、コードのあちこちに精巧な罠を仕掛け、それから自分の罠から抜け出す--これがC++プログラミングの全プロセスです。
 
Vasiliy Sokolov:

...

クラスメソッドにこのようなモディファイアを導入することの主な間違いは何でしょうか?継承の大原則である「特殊化・洗練化」が侵されているのです。ベースクラスは、派生クラスのメソッドがその内部データを操作することを禁止しています。しかし、そんなことはあってはならない。

もしかしたら、作り手から単純な使い手に渡る部分もあるのかもしれませんね。Expert Advisorのstart関数やBidとAskの変数と同じです。

全部自分で作るとなると、わざわざいろいろな制約を受ける意味がないんです。

 
Vasiliy Sokolov:

否定はしませんが。シャープは、まさに完璧で、偉大で、美しい言語です。

...

素晴らしい。しかし、完璧には程遠い。
 
Dmitry Fedoseev:
素晴らしい。しかし、完璧には程遠い。
シャープが良いのは、作った天才がいるわけではなく、最後の1台だからです。その前の30年間は、さまざまな大きさや空想的な構成の熊手で殺そうとしていたのです。C++は、そのための素晴らしい実験 場でした。皆殺しにされた後、マイクロソフトの連中がスパスパと......。は、試行錯誤したコンセプトを採用し、ゼロから構文的にきれいな言語を作り上げました。
 
ところで、MetaQuotesも、MQL5をC++のようなローブ型のモンスターに徐々に「発展」させていく良いチャンスだったのです。しかし、C++の深い知識(そこには汗と涙と憎しみがあったに違いない)は、フォーラムの古参C++プログラマーのアドバイスに従うべきでないことを悟らせたのである。そのため、現在では、構文的にきれいで、多かれ少なかれ厳密に型付けされたプログラミング言語が存在しています。完全に怪物的な遺産をもとに、こんなお菓子を作ることができたのは、驚きですらあります。マスターベーションは失われない、と言われています。