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

 
Alexey Kozitsyn:
ここで言われているのは、クラスAのオブジェクト1がクラスAの定数メソッドを 呼び出した場合、そのメソッドはそのオブジェクト1(つまり呼び出したオブジェクト1)を変更できない、ということです。しかし、object1が同じ定数メソッドに参照渡しされ、クラスAのobject2から呼び出された場合、object1を変更することができる。逆にObject2ができない。

オブジェクトはどのようにしてメソッドを呼び出すのですか?メソッドは、関数から呼び出すことも、他のメソッドから呼び出すこともできます。

呼び出されるのは、単なるクラスメソッドではなく、特定のオブジェクトのメソッドである。クラス自体は抽象化されたものです。

 
Dmitry Fedoseev:

オブジェクトはどのようにしてメソッドを呼び出すのですか?メソッドは、関数から呼び出すことも、他のメソッドから呼び出すこともできます。

呼び出されるのは、単なるクラスメソッドではなく、特定のオブジェクトのメソッドである。クラス自体は抽象化されたものです。

それこそ些細なことですが。というタイプのレコードを

obj.method();

なんていうんですか?

自分で書いているんですね。

呼び出されるのは、単なるクラスメソッドではなく、特定のオブジェクトのメソッドです。

許容範囲内ということもできます。

method();

メソッドコールとは何ですか?

つまり、どのようなメソッドで呼び出されるのでしょうか?

 
@Alexey Kozitsyn:

それは大変ですね。といったエントリーが...。

なんていうんだっけ

自分で書くんですね。

許されると言うことですね。

メソッドコールとは何ですか?

つまり、どのような方法で呼び出すのか。

状況を見てください。問題があるのはあなたであって、私ではない。アレクセイの例は、あなたにとっては不正確なようですが、私にとっては非常に明快で理解しやすいものです。

--

"型入力 "とは、"obj "オブジェクトの "method "メソッドを呼び出すことです。

--

"こんな記録も許される "と言ってくれる--そんなことを書いている人という印象です。

---

このメソッドは何も呼び出さない。メソッドが呼び出されます。

 
Dmitry Fedoseev:

状況を見てください。混乱しているのは、私ではなく、あなたなのです。アレクセイの例は、あなたにとっては間違っているように見えますが、私にとっては十分に明確で理解できるものであり、何の疑問も抱かず、ただ理解できただけです。

--

"型入力 "とは、"obj "オブジェクトの "method "メソッドを呼び出すことです。

--

"こんな記録も許される "と言ってくれる--そんなことを書いている人という印象です。

---

このメソッドは何も呼び出さない。メソッドが呼び出されます。

アレクセイの例は許容範囲だが、個人的な意見としては、他の人の模範となるべきでない。

つまり、何がクラスのメソッド 呼び出しを開始するのか(あるいは、何がメソッドを呼び出すのか(メソッドを通じて呼び出されるものではなく、何が/誰がメソッド自体を呼び出すのか))、という私の質問にまだ答えていないのですね。

方法は問いません。素朴な疑問なのですが、OOPについて初心者向けの記事を書かれていますね。

メソッドは何も呼び出さない。メソッドが呼び出されます。

では、withは何と呼ばれているのでしょうか?
 
Alexey Kozitsyn:

1.アレクセイの例は許容範囲だが、個人的な意見としては、彼が他の人の模範になるべきでない。

2.クラスのメソッド 呼び出しを初期化するのは何か(あるいは、メソッドを呼び出すのは何か(メソッドを介して呼び出されるものではなく、メソッド自体を呼び出すのは何か/誰か))という私の質問に、あなたはまだ答えていないのですね。

3.任意の方法。素朴な疑問なのですが、OOPについて初心者向けの記事を書かれていますね。

1.あなた自身の例を提案してください。

2.回答はありません。だって、何の話かわからないんだもん。

3.私も何を言っているのかわからない。

 
void fun(){
   obj.method();
}
fun "関数から "obj "オブジェクトの "method "メソッドが呼び出されます。
 
Dmitry Fedoseev:

1.あなた自身の例を提示してください。

2.回答はありません。だって、何の話かわからないんだもん。

3.私も何を言っているのかわからない。

2.クラスメソッド(スタティックメソッドではない)を呼び出すものについての議論である。クラスのメソッドがクラスのオブジェクトによって呼び出されるか、さもなければ、クラスのオブジェクトがクラスのメソッドの呼び出しを開始する、例えば、this:

obj.method();   // obj - объект класса А, method() - метод класса А

メソッドが定数である場合、それが呼び出されたオブジェクト、すなわちobjオブジェクトを変更することはできません。一方、渡されたオブジェクト(例:obj2)。

obj.method( obj2 );

は、const 修飾子なしで参照渡しされた場合、修正することができます。以上です。

私は当初、フォーラムの「corefeys」の発言が理解できませんでした。

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

メソッド宣言の後の const 修飾の意味

コンビナート 2016.01.31 20:32

C++では、このメソッドは、mutableと宣言されたメンバーを除いて、 クラスのメンバーを 変更することができないことを意味します。

MQLではそのようなものは得られないので、原則的にメソッドはオブジェクトを変更できないことになります。

または

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

メソッド宣言の後のconst修飾子は何を意味するのですか?

ヴァシリー・ソコロフ さん 2016.02.01 11:55

定法とは、「より良いものを作ろうとしたが、結局はいつもと同じになってしまった」という諺の一例である。これは、C++のモットーでもあると思うんです。実用的な用途はありませんが、変更されたオブジェクトの型を常に制御する必要があるため、OOPプログラムの設計が非常に複雑になります(それも一定でなければ なりません)。

または

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

メソッド宣言の後の const 修飾の意味

ヴァシリイ・ソコロフ, 2016.02.01 14:02

例 Alexey さんが書きました。定数メソッドは、そのクラスのメンバを変更 することはできません...

では、なぜそれができないのでしょうか?すべてが完璧に変化します。また、定数メソッドはそのクラスのインスタンスの メンバーを変更することはできないという表現自体が間違っています。

 
Vasiliy Sokolov:

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

よし、いつでもコンストで逃げられるとしよう。でも、例を挙げて簡単に説明した方がいい、constを与えるのは?その本当の使い道は?例によって、そしてできれば何もないところから書かないでほしい。

自分のために、プロジェクト 全体を数千〜数万の文字列で書くのは一つの手です。数百万行のプロジェクトをクライアントに渡したとき、ヒンズー教のハリクリシュナが何の手がかりもなく座っているのは、また別の話だ。バンガロールのヒンズー教徒と一緒に仕事をしたのですが、実はレベルは私たちの仲間より低かったんです。

そこと同じで、プログラマーとしての訓練を受け、残りの親族を職場に連れて行くのですが、全く何も知らないかもしれないのです。彼らはジプシーです。

また、重要なコードがlibuにまとめられていれば、破損の可能性は低くなります。それが私の考えです。

 
Alexey Kozitsyn:

...

なぜダメなんだ!すべてがうまく変更できるのです。また、定数メソッドはそのクラスのインスタンスの メンバを変更することはできません。

この文脈で型を語っているわけではないので、こういうことなのです。"自クラス "は明らかにそれ自身のインスタンス(=オブジェクト)です。

 void bar(X& obj) const 
    {
        obj._x = 42; // Здесь меняем члена не своего класса OK! obj передается по ссылке и не имеет модификатора const
        _x = 42; // Попытка изменить члена своего класса ERROR!
    }

x メンバは bar メソッドと同じ クラスに属しています。

C obj._x - ここでは、_x メンバは外部クラス obj にあります。

なぜなら、_xは私たちが書いた私たちのクラスに属し、obj.xは私たちが扱う外国のクラスに属することは明らかだからです。

OOPの用語といえば、ここでの用語はすべてそれなり(あるいはそれ以上)です。

 

個人的には、constメソッドは、クラス変数を変更できないメソッドと理解していました。

というのも、ベースとなるメソッドは不変なのに、メソッドの再定義で何かを変更しなければならない状況によく遭遇するからです(ここですでに言及されています)。

静的な手法が多用されている。ほとんどすべての複雑なクラスで。通常、これらはクラス変数にアクセスする必要のない「奉仕的」な追加メソッドです。

また、「1日の秒数」のような定数は、#defineではなく、静的なconstを使うようにしています。この場合、このような定数の宣言と初期化は別の場所にあるのですが、型制御が発生するので、何度も助けられました。