- *Copyright(c)2016,烟台大学计算机与控制工程学院
- *All rights reserved
- *文件名称:123.cpp
- *作 者:隋宗涛
- *完成日期:2016年5月10日
- *版 本 号:v1.0
- *
- *问题描述:阅读程序,增加复制构造函数
- *输入描述:
- *程序输出:
- */
- #include<iostream>
- #include<cstring>
- using namespace std;
- class A
- {
- private:
- char *a;
- public:
- A(char *aa)
- {
- a = new char[strlen(aa)+1]; //这样处理的意义在于可以不浪费内存空间,节省许多系统单元
- strcpy(a, aa); //数据成员a与形式参数aa的关系是a与aa同为指针数组,系统分配的内存空间相同
- }
- A(A &b)
- {
- a=new char[strlen(b.a)+1];
- strcpy(a,b.a);
- }
- ~A()
- {
- delete []a; //这样处理的意义在于可以释放指针所指向的内存空间,否则会导致动态分配的内存
- } //无法回收,使得程序所占的内存越来越大
- void output() { cout<<a<<endl; }
- };
- int main(){
- A a("good morning, code monkeys!");
- a.output();
- A b(a);
- b.output();
- return 0;
- }
<pre name="code" class="cpp">/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年4月24日 *版 本 号:v1.0 * *问题描述:阅读程序,增加复制构造函数 *输入描述: *程序输出: */ #include<iostream> #include<cstring> using namespace std; class A { private: char *a; public: A(char *aa) { a = new char[strlen(aa)+1]; //这样处理的意义在于可以不浪费内存空间,节省许多系统单元 strcpy(a, aa); //数据成员a与形式参数aa的关系是a与aa同为指针数组,系统分配的内存空间相同 } A(A &b) { a=new char[strlen(b.a)+1]; strcpy(a,b.a); } ~A() { delete []a; //这样处理的意义在于可以释放指针所指向的内存空间,否则会导致动态分配的内存 } //无法回收,使得程序所占的内存越来越大 void output() { cout<<a<<endl; } }; int main(){ A a("good morning, code monkeys!"); a.output(); A b(a); b.output(); return 0; }