一个简单vector问题求助
输出老是不对,但是不知道错在那里,请各位指点:
- C/C++ code
#main.cpp#include <cstdlib>#include<iostream>#include<vector>#include<time.h>#include "Animal.h" using namespace std;int main(int argc, char** argv) { int n = 10; srand(time(0)); vector <Animal> a; for (int i = 0; i < n; i++) { int age = (rand() % 11); int allele = (rand() % 2); Animal ani(age, allele); cout << "animal[" << i << "]: age = " << ani.age << "; allele =" << ani.allele << endl; a.push_back(ani); } cout << endl; for (vector<Animal>::size_type i = 0; i != a.size(); ++i) { cout << "animal[" << i << "]: age = " << a[i].getAge() << "; allele =" << a[i].getAllele() << endl; } return 0;}
- C/C++ code
#Animal.cpp#include "Animal.h"Animal::Animal() {}Animal::Animal(int age, int allele) { Animal::age = age; Animal::allele = allele;}Animal::Animal(const Animal& orig) {}Animal::~Animal() {}int Animal::getAge(){ return Animal::age;}int Animal::getAllele(){ return Animal::allele;}
- C/C++ code
#Animal.h#ifndef ANIMAL_H#define ANIMAL_Hclass Animal {public: Animal(); Animal(int age, int allele); Animal(const Animal& orig); virtual ~Animal(); int getAge(); int getAllele(); int age; //年龄 int allele; private:};#endif /* ANIMAL_H */
输出是:
animal[0]: age = 7; allele =0
animal[1]: age = 8; allele =1
animal[2]: age = 0; allele =1
animal[3]: age = 3; allele =0
animal[4]: age = 9; allele =0
animal[5]: age = 5; allele =0
animal[6]: age = 10; allele =1
animal[7]: age = 1; allele =1
animal[8]: age = 9; allele =0
animal[9]: age = 9; allele =1
animal[0]: age = 4001968; allele =1325412398
animal[1]: age = 2003788910; allele =1414422387
animal[2]: age = 977485128; allele =1736008540
animal[3]: age = 997091682; allele =1348221507
animal[4]: age = 1702127987; allele =1852400220
animal[5]: age = 1819436368; allele =1852400220
animal[6]: age = 1735357008; allele =544039282
animal[7]: age = 1447976051; allele =1095320649
animal[8]: age = 1836008224; allele =1769239920
animal[9]: age = 1802268527; allele =1130132585
显然有问题
[解决办法]
问题在这。
- C/C++ code
Animal::Animal(const Animal& orig) { age = orig.age; allele = orig.allele;}