基类指针指向派生类,为什么基类的析构函数声明为虚函数后,delete基类指针后会调用到派生类的析构函数,基类的指针不是只指向派生类中继承的基类的部分吗,派生类的析构函数又不在那部分啊
这个调用,说的是编译器的自动调用,不是手工的调用
不知道你这个问题是否已经解决, 如果还没有解决的话:void crossover_and_variation(){//生殖交叉、变异
for(int k=0; k<animal_num; k++){
int father[DNA_bit * DNA_num];
int mother[DNA_bit * DNA_num];
int child[DNA_bit * DNA_num];
int father_id = rand() % 200;
int mother_id = rand() % 200;
for(int i=0; i<DNA_bit * DNA_num; i++){
father[i] = animal[father_id].DNA[i];
mother[i] = animal[mother_id].DNA[i];
}
if((rand()%100)/100.0 < cross_rate){
int cross_pos = rand() % (DNA_bit * DNA_num);
for(int i=0; i<cross_pos; i++)child[i] = father[i];
for(int i=cross_pos; i<DNA_bit * DNA_num; i++)child[i] = mother[i];
}
if((rand()%100)/100.0 < variation_rate){
int variation_pos = rand() % (DNA_bit * DNA_num);
child[variation_pos] = 1 - child[variation_pos];
}
for(int j=0; j<DNA_bit * DNA_num; j++){
selected_animal[k].DNA[j] = child[j];
}
}
}