class CExample { int param; public: CExample(); CExample(int x); ~CExample(); }
CExample::CExample(int x) { param = x; }
//..........вызов.............. //..где-то в тексте программы..
CExample *ex1 = new CExample; //создание с конструктором CExample(); CExample *ex1 = new CExample(); //создание с конструктором CExample(); CExample *ex1 = new CExample(value); //создание с конструктором CExample(int x);
new演算 子はクラスのインスタンスを生成し、それに連動してコンストラクタが呼び出されます。構文に書かれているので、それ以外に呼び出す方法はない。
この例から進めていきました。
大雑把に言うと、ここには括弧(コンストラクタの呼び出し)はありません。まだ何か見落としている可能性があります。このコードは、多重継承とほとんど変わりません。
実際、C_Cクラスは適切なポインタを通じてC_A、C_Bデータにアクセスできる。私はこの例を参考にさせていただきました。
ここでは、大雑把に言うと、括弧がない(コンストラクタ呼び出し)。まだ理解していないことがあるのかもしれません。なぜ私なのか、それは私のためではなく、中央の洗濯機のためです、私は括弧を使いませんでした :o)
私のコンパイラは、括弧の欠落について文句を言わないのですが......。
ともあれ、ふと疑問がわきました。それとも、ブラケットがあってもなくても、違いはないのでしょうか?
私のコンパイラは、括弧の欠落について文句を言わないのですが......。
ともあれ、ふと疑問が湧いた。それとも、ブラケットがあってもなくても変わりはないのでしょうか?
両方使えるのであれば、むしろ構文統一の問題です。スピードに影響を与えないというのが大きなポイントです。
ZS そして、その効果は全くないのでしょうか? 正直なところ、私はいつも括弧をつけて書いているので、確認していません。
両方使えるとなると、むしろ構文統一の問題ですね。スピードに影響を与えないことが最大のポイントです。
ZS 全然効かないんですか? 正直言って、いつもカッコで書いているので、確認していないんです。
MQL5でクラスオブジェクトを 動的に生成する記述は読んでいませんが、C++では括弧なし(標準のコンストラクタが呼ばれる)、括弧あり(括弧内のパラメータに応じてコンストラクタが呼ばれる)が可能です。例
class CExample
{
int param;
public:
CExample();
CExample(int x);
~CExample();
}
CExample::CExample(int x)
{
param = x;
}
//..........вызов..............
//..где-то в тексте программы..
CExample *ex1 = new CExample; //создание с конструктором CExample();
CExample *ex1 = new CExample(); //создание с конструктором CExample();
CExample *ex1 = new CExample(value); //создание с конструктором CExample(int x);
mql5では、まだコンストラクタにパラメータを渡すことができません。
MQL5でクラスオブジェクトを 動的に生成する記述は読んでいませんが、C++では括弧なし(標準のコンストラクタが呼ばれる)、括弧あり(括弧内のパラメータに応じてコンストラクタが呼ばれる)が可能です。例
了解です。シンプルでわかりやすい説明をありがとうございました。括弧は可能なパラメータ用であることが判明した。
また、MQL5で動的なクラスオブジェクトを作成する方法についての説明は非常に簡潔です。
MQL5 リファレンス / 言語の基礎 / 演算子 / オブジェクト作成演算子 new
MQL5リファレンス / 言語の基礎 / データ型 / オブジェクトポインタ