巴解组织。应用问题

 

关于 "巴解"的话题已经变成了 "好还是坏 "的意见交流。我想知道更多朴实的问题的答案。

问题是这样的。在一本关于C++的教科书中,我遇到过这样的说法:一个类的实例可以同时成为两个不同的父类的后裔,例如

class A
{...}
class B
{...}
class C : public A : public B
{...}

或类似的东西(找不到来源)。在MQL5中是什么情况?是否可以声明该类是两个不同父类的后代?语法是什么?

帮助》中的一句话:"没有多重遗产 "不就是关于这种情况的吗?

 
Yedelkin:

关于巴解组织 的话题已经变成了 "好或不好 "的意见交流。我想知道更多朴实的问题的答案。

问题是这样的。在一本关于C++的教科书中,我遇到过这样的说法:一个类的实例可以同时成为两个不同父类的后代,例如

或类似的东西(找不到来源)。在MQL5中是什么情况?是否可以声明该类是两个不同父类的后代?语法是什么?

帮助》中的一句话:"没有多重遗产 "不就是关于这种情况的吗?

在MQL5中不支持多重继承,但有一个有趣的机制用于传递对象指针,通过它可以实现类似的东西。

 

有了OOP,结构化代码就非常容易了(原谅我的琐碎)。你逐一采取和盖章的方法。它非常有效和清晰。但是,一个问题出现了:这种多重包装器不会影响处理器的代码处理速度吗?具体来说,这两个代码片段的执行速度有什么不同吗?

double ddd=0.0;                   //первый вариант кода, инициализация без применения функций/методов
 

double ddd;                       //второй вариант кода, инициализация с применением функций/методов
void function(double a) { a=0.0; }
...
function(ddd);

还是在编译阶段将代码从人类语言转换为机器语言,从而使这两种变体在计算机的处理速度上没有任何差别?

 
Urain:

在MQL5中不支持多重继承 ...

那么,"多重遗产 "就是父母的复数?

 
Yedelkin:
那么,"多重遗产 "是复数的养育方式?

是的正是一个类可以有一个父类,级联可以,但两个父类和mql5不能。

原则上,你可以在类本身中调用 "作为父类的类型",并通过其指针访问 "作为母类的类型 "的数据,而不是继承。

 
Urain:
是的正是一个类可以有一个父类,级联可以,但两个父类和mql5不能。
好的,知道了。我没有想到马上去查这个词的含义。
 
Yedelkin:

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

class C_A
  {
public:
                     C_A(void){};
                    ~C_A(void){};
   double            a;
  };
//+------------------------------------------------------------------+
class C_B
  {
public:
                     C_B(void){};
                    ~C_B(void){};
   double            b;
  };
//+------------------------------------------------------------------+
class C_C
  {
public:
   C_A              *ua;
   C_B              *ub;
                     C_C(void){ua=new C_A();ub=new C_B();};
                    ~C_C(void){delete ua;delete ub;};
  };
//+------------------------------------------------------------------+
事实上,C_C类可以通过适当的指针访问C_A和C_B数据。
 
Urain:

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

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

酷!我不会想到在构造函数中创建一个外部类的实例。谢谢你的帮助!

补遗。而在这一行中

C_C(void){ua=new C_A();ub=new C_B();};

操作符被应用于C_A类的C_A()构造函数。

从参考书中,我了解到new 操作符的操作数是类本身,而不是其构造函数。这里会有什么奇特的地方呢?

 
顺便说一下,一段时间后,设计师将有参数工作,这将使开发人员的生活变得更加容易。
 
Renat:
顺便说一下,一段时间后,设计师将有参数工作,这将使开发人员的生活变得更容易。
是的,我记得:)
 
Yedelkin:

酷!我不会想到在构造函数中创建一个外部类的实例。谢谢你的帮助!

补遗。而在这一行。

操作符被应用于C_A类的C_A()构造函数。

从参考书中,我了解到new 操作符的操作数是类本身,而不是其构造函数。这里会有什么奇特的地方呢?

新操作符 创建了一个类的实例,并同时调用了一个构造函数。它被写在语法中,所以你不能以其他方式调用它。

一切都在静态声明中自动发生。

顺便说一下,这也会起作用并被自动销毁

class C_C
  {
public:
   C_A               ua;
   C_B               ub;
                     C_C(void){};
                    ~C_C(void){};
  };
//+------------------------------------------------------------------+
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5