巴解组织。应用问题 - 页 2

 
Urain:

new操作符 创建了一个类的实例,并与之一起调用构造函数。它被写在语法中,所以没有其他方法可以调用它。

我从这个例子出发。

//+------------------------------------------------------------------+
//| Создание фигуры                                                  |
//+------------------------------------------------------------------+
void CTetrisField::NewShape()
  {
   m_ypos=HORZ_BORDER;
//--- случайным образом создаём одну из 7 возможных фигур
   int nshape=rand()%7;
   switch(nshape)
     {
      case 0: m_shape=new CTetrisShape1; break;
      case 1: m_shape=new CTetrisShape2; break;
      case 2: m_shape=new CTetrisShape3; break;
      case 3: m_shape=new CTetrisShape4; break;
      case 4: m_shape=new CTetrisShape5; break;
      case 5: m_shape=new CTetrisShape6; break;
      case 6: m_shape=new CTetrisShape7; break;
     }
粗略地说,这里没有括号(构造函数调用)。可能是我还没有理解到什么。
 
Urain:

这段代码与多重继承几乎没有区别。

事实上,类C_C可以通过适当的指针访问C_A和C_B的数据。


这就是所谓的聚合
 
Yedelkin:

我是根据这个例子来的。

这里,大致上说,没有括号(构造函数调用)。有可能是我还不了解一些情况。

为什么是我,这不是给我的,是给中央洗衣店的,我没有拿支架 :o)
 
Urain:
为什么是我,这不是给我的,是给中央洗衣店的,我没有用括号 :o)

我的编译器并没有抱怨缺少括号...

      case  50: d_Control=new CControl_50; break;

总之,突然出现了一个问题:什么是正确的方法?或者说,有无括号并无区别?

 
Yedelkin:

我的编译器并没有抱怨缺少括号...

总之,突然出现了一个问题:什么是正确的方法?还是说有无托架并无区别?

如果它在两个方面都能起作用,那就相当是一个语法统一的问题了。最主要的是,它不影响速度。

说实话,我没有检查过,我总是用括号写。

 
Urain:

如果两边都能用,那就更多是语法统一的问题了。最主要的是不要影响速度。

说实话,我没有检查过,我总是用括号写。

到目前为止,我只能谈一谈编译的结果。要检查该代码是否真的有效,还有很长的路要走。
 

我没有读过在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: Основы языка / Типы данных / Структуры и классы
  • www.mql5.com
Основы языка / Типы данных / Структуры и классы - Документация по MQL5
 
在mql5中,你不能向构造函数传递参数。
 
Vigor:
在mql5中,还没有参数可以传递给构造函数。

澄清 "在mql5中 没有参数可以传递给构造函数"。
 
PiramidaR:

我没有读过在MQL5中动态创建类对象 的描述,但在C++中,你可以不带括号(标准构造函数被调用)和带括号(构造函数被调用取决于括号中的参数)。例子。

明白了,谢谢你的简单明了的解释。事实证明,圆括号是用于可能的参数。

而关于如何在MQL5中创建动态类对象的描述是非常简洁的。

MQL5参考 / 语言基础知识 / 操作符 / 对象创建操作符new

MQL5参考 / 语言基础知识 / 数据类型 / 对象指针