Cow.h
#ifndef COW_H_
#define COW_H_
class Cow
{
char name[20];
char * hobby;
double weight;
public:
Cow();
Cow(const char * nm, const char * ho, double wt);
Cow(const Cow & c);
~Cow();
Cow & operator=(const Cow & c);
void ShowCow() const;
};
#endif
Cow.cpp
#include "Cow.h"
#include <cstring>
#include <iostream>
using std::strcpy;
using std::strlen;
Cow::Cow()
{
name[0]='\0';
hobby=new char [1]; //不能用new char,因为与析构函数不对应
hobby[0]='\0';
weight=0;
}
Cow::Cow(const char * nm, const char * ho, double wt)
{
strcpy(name, nm);
hobby=new char [strlen(ho+1)];
strcpy(hobby, ho);
weight=wt;
}
Cow::Cow(const Cow & c)
{
strcpy(name, c.name);
hobby=new char [strlen(c.hobby+1)];
strcpy(hobby, c.hobby);
weight=c.weight;
}
Cow::~Cow()
{
delete [] hobby;
}
Cow & Cow::operator=(const Cow & c)
{
if(this==&c)
return *this;
delete [] hobby;
strcpy(name, c.name);
hobby=new char [strlen(c.hobby+1)];
strcpy(hobby, c.hobby);
weight=c.weight;
return *this;
}
void Cow::ShowCow() const
{
std::cout<<"name: "<<name<<std::endl;
std::cout<<"hobby: "<<hobby<<std::endl;
std::cout<<"weight: "<<weight<<std::endl;
std::cout<<std::endl;
}
main.cpp
#include "Cow.h"
#include <iostream>
int main()
{
Cow c1;
c1.ShowCow();
Cow c2("zhangzhiping", "basketball", 67);
c2.ShowCow();
std::cout<<"Assign one object to another:\n";
c1=c2;
c1.ShowCow();
std::cout<<"Initialize one object to another:\n";
Cow c3=c2;
c3.ShowCow();
std::cout<<"Done!\n";
std::cin.get();
return 0;
}