关于GaLib247 EX5成员函数copy的理解

关于GaLib247 EX5中

CompositeGenome::copy的理解

问题背景回顾:
EX5介绍了一种衍生自GAGenome类的合成基因组类(composite genome),该类包含了一个2DBinStr基因组和一个Bin2Dec基因组。程序利用steady-state GA来匹配2DBinStr部分中的2D模式,以及一个Bin2Dec部分中的数列。

该合成基因组类中定义了多个类成员函数以及构造函数等,现以copy为例对该类的合成原理进行说明,其成员函数具有如下形式的定义:
void
CompositeGenome::copy(const GAGenome & c){
if(&c != this && sameClass(c)){
GAGenome::copy(c);
CompositeGenome & bc = (CompositeGenome &)c; str->copy(*(bc.str));
b2d->copy(*(bc.b2d))
}
}

//————–|对copy的理解|————–
//由CompositeGenome genome(width, height, map, Objective, (void *)&mydata)
//可知CompositeGenome对象genome的一个参数是userData,即这里的mydata
//也就是说GAGenome的对象ga中携带着用户数据,即target和sequence
//另一方面,(从文件中读取的)输入数据是按如下方式赋值给myData的
//首先,定义一个包含两个指针变量的结构体
//typedef struct _CompositeData {
// short ** str;
// float * b2d;
//} CompositeData;
//然后,实例化该CompositeData类型的结构体,用以接收用户输入的数据
//CompositeData mydata;
// mydata.str = target;
// mydata.b2d = sequence;
//所以mydata中直接存放了两个被赋值的指针变量,也就是说参数c中间接地含有这两个指针变量,
//并且他们的值分别为target和sequence
//进一步地,当父类(GAGenome类型)对象c被强制转换为子类(CompositeGenome)对象bc时,
//bc从c中继承了全部的内容(包括数据,变量和方法)
//这时就子类对象bc就可以通过调用其指针型数据成员str和b2d来获取父类对象传递过来的数据了
//———————————————

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值