64,688
社区成员
发帖
与我相关
我的任务
分享
#ifndef Person_hpp
#define Person_hpp
#include <iostream>
#include <cstring>
using namespace std;
class Person{
public:
Person();
Person(char* name,int age);
Person(Person& p);
bool operator<(Person& p);
Person& operator=(Person& p);
friend ostream& operator<<(ostream& out,Person& p);
void print();
~Person();
private:
char* name;
int age;
};
#endif /* Person_hpp */
#include "Person.hpp"
Person::Person(){
name = new char[1];
name[0] = '\0';
age = 0;
}
Person::Person(char* _name,int _age){
name = new char[strlen(_name)+1];
strcpy(name, _name);
age = _age;
}
Person::Person(Person& p){
name = new char[strlen(p.name+1)];
strcpy(name, p.name);
age = p.age;
}
bool Person::operator<(Person& p){
if(age<p.age){
return false;
}
else{
return true;
}
}
Person& Person::operator=(Person& p){
if(this!=&p){
if(name){
delete [] name;
name = NULL;
}
name = new char[strlen(p.name)+1];
strcpy(name, p.name);
age = p.age;
}
return *this;
}
ostream& operator<<(ostream& out,Person& p){
out<<"name:"<<p.name<<endl;
out<<"age:"<<p.age<<endl;
return out;
}
void Person::print(){
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
}
Person::~Person(){
if(name){
delete [] name;
name = NULL;
}
}
#include <vector>
#include <iterator>
#include <iostream>
#include "Person.hpp"
using namespace std;
int main(int argc, const char * argv[]) {
//vector<Person*> vec;
vector<Person> vec;
Person p1("Mike",25);
Person p2("John",22);
vec.push_back(p1);
vec.push_back(p2);
vector<Person>::iterator ite;
//vec.push_back(&p1);
//vec.push_back(&p2);
//vector<Person*>::iterator ite;
for(ite = vec.begin();ite!=vec.end();++ite){
// cout<<**ite<<endl;
cout<<*ite<<endl;
}
return 0;
}