int main() { A a("good morning, code monkeys!"); a.output(); A b(a); b.output(); return 0; }
参考解答:
/* Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作者:陈丹妮 * 完成日期:2015年 4 月 14 日 * 版 本 号:v1.0 */ #include<iostream> #include<cstring> using namespace std; class A { private: char *a; public: A(char *aa) { a = new char[strlen(aa)+1]; //(a)这样处理的意义在于:_一串字符串的实际长度除了字符外,末尾何有一个\0的长度 strcpy(a, aa); //(b)数据成员a与形式参数aa的关系:_aa复制给a,二者是相等的 } ~A() { delete []a; //(c)这样处理的意义在于:仅通过new分布的空间,用delete释放回收地址(运行一次,分配一次)如果不释放,内存会满盖,导致死机. } void output() { cout<<a<<endl; } A (A &b) { a=new char[strlen(b.a)+1]; strcpy(a, b.a); } }; int main(){ A a("good morning, code monkeys!"); a.output(); A b(a); b.output(); return 0; }
心得体会:这样用就会很方便的!感觉,我们学的知识是越来越有效率的,希望自己能很好的掌握!继续加油吧!
原文地址:http://blog.csdn.net/nufangdongde/article/details/45039923