Fortran Coder

查看: 144|回复: 12

[面向对象] 一个新手村的问题

[复制链接]

42

帖子

11

主题

0

精华

熟手

F 币
201 元
贡献
130 点
发表于 2019-1-9 22:14:50 | 显示全部楼层 |阅读模式
问题 1:

如果有个父类里面有个member:: x(2),可以表示2维的点。

那我可不可以通过改变它的维数来进行继承,例如改成 x(3),来表示一个3维的点。

而不是教科书上所写的那样,先有 real :: x,y
再继承的时候扩充为 x,y,z

问题 2:
如果已经有一个父类了,


那有继承关系的子类能不能是该父类数据类型的数组?


例如:父类是2d的点,
子类是一堆2d的点。


在下小白,写过一点code,但远远感觉火候未到,十分力不从心,特别是继承这块,还望各位大大海涵。


回复

使用道具 举报

629

帖子

0

主题

0

精华

大师

F 币
683 元
贡献
413 点

规矩勋章元老勋章新人勋章水王勋章

QQ
发表于 2019-1-9 23:12:18 | 显示全部楼层
很不幸,都不能。

42

帖子

11

主题

0

精华

熟手

F 币
201 元
贡献
130 点
 楼主| 发表于 2019-1-10 14:59:48 | 显示全部楼层
请问C++中是否可以实现

313

帖子

1

主题

0

精华

宗师

F 币
1692 元
贡献
1131 点
发表于 2019-1-10 20:44:17 | 显示全部楼层
1、可以用带参数的type实现,或者把x定义为动态数组;
2、子类必定包含父类的元素(例如下图中的x,y),所以子类不能是父类的数组。但子类可以含有 父类的数组。
QQ截图20190110204018.png

42

帖子

11

主题

0

精华

熟手

F 币
201 元
贡献
130 点
 楼主| 发表于 2019-1-11 15:04:30 | 显示全部楼层
li913 发表于 2019-1-10 20:44
1、可以用带参数的type实现,或者把x定义为动态数组;
2、子类必定包含父类的元素(例如下图中的x,y),所 ...

2里面的方法我想到了,但总感觉不够“美”,总觉得里面的x,y是多余的。
1里面的方法很妙啊!不过现在的gf好像对含参的type支持的不是很好。

42

帖子

11

主题

0

精华

熟手

F 币
201 元
贡献
130 点
 楼主| 发表于 2019-1-11 15:28:55 | 显示全部楼层
li913 发表于 2019-1-10 20:44
1、可以用带参数的type实现,或者把x定义为动态数组;
2、子类必定包含父类的元素(例如下图中的x,y),所 ...

我又想了下,感觉使用含参数的类可能会在“+,-,*,/,=“这些函数上出现问题吧。

313

帖子

1

主题

0

精华

宗师

F 币
1692 元
贡献
1131 点
发表于 2019-1-11 20:03:39 | 显示全部楼层
本帖最后由 li913 于 2019-1-11 20:08 编辑
lookbook 发表于 2019-1-11 15:28
我又想了下,感觉使用含参数的类可能会在“+,-,*,/,=“这些函数上出现问题吧。 ...

1、我感觉带参数的type不好用;2、建议使用数组指针x,由x的元素个数确定是2D还是3D;
3、type的 + - * / = 等操作,可以自己重载。参考这个帖子的回复http://bbs.fcode.cn/thread-1843-1-1.html

42

帖子

11

主题

0

精华

熟手

F 币
201 元
贡献
130 点
 楼主| 发表于 2019-1-12 20:39:50 | 显示全部楼层
li913 发表于 2019-1-11 20:03
1、我感觉带参数的type不好用;2、建议使用数组指针x,由x的元素个数确定是2D还是3D;
3、type的 + - * /  ...

大佬,数组指针怎么说,不太明白

313

帖子

1

主题

0

精华

宗师

F 币
1692 元
贡献
1131 点
发表于 2019-1-13 16:18:10 | 显示全部楼层
type t
real,pointer::x(:)
endtype

480

帖子

4

主题

0

精华

大宗师

F 币
3219 元
贡献
1906 点

水王勋章元老勋章热心勋章

发表于 2019-1-20 09:11:33 | 显示全部楼层
问题1:为啥不考虑模板呢?
譬如:https://github.com/alexispaz/FortranTemplates

btw,有这么多优秀的OO编程语言,为啥非要选择Fortran呢?
新手上来就开启hard模式。。。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2019-2-23 00:35

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表