Oop 实际上是什么;类型绑定子例程“;用Fortran和相关语言?

Oop 实际上是什么;类型绑定子例程“;用Fortran和相关语言?,oop,fortran,Oop,Fortran,我对Fortran语言非常陌生,我刚学了一个月。(我更经常使用C/C++) 我有几个问题: 什么是“类型绑定子例程”?我的理解是,子例程只能由具有特定类型的特定实例调用。 (). 事实上,我读过的书中没有一本能很好地解释这一点,这是相当令人惊讶的 如果派生类型也可以有子例程,那么将它们放在派生类型内部和外部(模块中的正常类型)之间有什么区别 按照上面的链接,“注意,我们已经将伪参数从类型(Circle)更改为类(Circle)。然后,我们可以以面向对象的方式调用类函数作为a=c%区域并调用c%打

我对Fortran语言非常陌生,我刚学了一个月。(我更经常使用C/C++) 我有几个问题:

  • 什么是“类型绑定子例程”?我的理解是,子例程只能由具有特定类型的特定实例调用。 (). 事实上,我读过的书中没有一本能很好地解释这一点,这是相当令人惊讶的
  • 如果派生类型也可以有子例程,那么将它们放在派生类型内部和外部(模块中的正常类型)之间有什么区别
  • 按照上面的链接,“注意,我们已经将伪参数从类型(Circle)更改为类(Circle)。然后,我们可以以面向对象的方式调用类函数作为a=c%区域并调用c%打印,其中类型自动传递给函数Circle\u区域和Circle\u打印的第一个参数。”对我来说,这就像“C++中的这个指针”(),所以如果我们把子程序放在派生类型中,我认为设计子程序时不再需要类型了?

  • 谢谢,我希望我已经解释得足够清楚。

    类型绑定过程提供了一种引用过程的不同方式-该过程通过绑定通过派生类型的对象进行引用。除了语法上的差异外,通过派生类型的对象进行引用还允许确定引用的特定过程在运行时基于对象的动态类型。这类似于C++中的指针或引用对象的虚拟成员函数的引用。

    不像C++,FORTRAN中的一个过程可能绑定到一个或多个派生类型——您不将一个过程放入一个派生类型中。一个发生类型绑定的过程也可以直接引用,而不需要类型绑定的语法,就像Fortran 95。

    当一个过程绑定到一个类型时,绑定可以指定一个传递的参数。如果有一个传递的参数,并且使用类型绑定的语法引用该过程,则传递的参数与该过程引用的对象相关联。C++中的隐式指针大致相当于FORTRAN中的这个指针。该参数被显式地传递和命名


    在类型绑定的过程中,作为传递参数的参数必须是多态的(使用类而不是类型声明),以允许传递参数的动态类型是参数声明类型的扩展项。

    “因此,如果我们将子例程放在派生类型内,我认为在设计子程序时,该类型将不再是必需的?“我不明白你的意思。如果你能列出一些示例,那就太好了。答案已经非常有用了。