C++Primer Plus(第六版) 第十二章 第一题

来源:互联网 发布:什么是奥菲斯软件 编辑:程序博客网 时间:2024/05/09 07:26

本题主要是对本章基本内容的掌握,对于动态分配内存(new、new[])的情况下析构函数要对应用delete、delete[],同时由于析构函数只有一个,故注意所有的构造函数(包括重载的=运算符等)都采用相同的动态内存分配方式。

代码如下:

#include <iostream>#include "cow.h"Cow::Cow(){hobby = new char[1];hobby[0] = '\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;strcpy(name, c.name);delete[] hobby;hobby = new char[strlen(c.hobby) + 1];strcpy(hobby, c.hobby);weight = c.weight;return *this;}void Cow::showCow() const{using std::cout;using std::endl;cout << "name: " << name << endl;cout << "hobby: " << hobby << endl;cout << "weight: " << weight << endl;}
测试代码:

#include <iostream>#include "cow.h"using namespace std;int main(){{Cow cow();}Cow cow("abcd", "habby", 45);Cow adc = cow;cow.showCow();adc.showCow();cin.get();return 0;}


原创粉丝点击