C++ Primer Plus第六版编程练习12.1解答

来源:互联网 发布:中国出境游数据 编辑:程序博客网 时间:2024/06/05 15:04

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;}


0 0
原创粉丝点击