您的位置:首页 > 编程语言

编程小练习

2016-04-28 08:54 225 查看
/*问题描述: 深复制体验,增加复制构造函数

*/

#include<iostream>

#include<cstring>

using namespace std;

class A

{

private:

    char *a;

public:

    A(char *aa)

    {

        a = new char[strlen(aa)+1];  //(a)这样处理的意义在于:不浪费内存空间,节省许多系统单元

        strcpy(a, aa);  //(b)数据成员a与形式参数aa的关系:a与aa同为指针数组,系统分配的内存空间相同

    }

    A(A &b)

        {

            a=new char[strlen(b.a)+1];

            strcpy(a,b.a);

        }

    ~A()

    {

        delete []a;   //(c)这样处理的意义在于:释放指针所指向的内存空间,否则会导致动态分配的内存

                     //                          无法回收,使得程序所占的内存越来越大

    }

    void output() { cout<<a<<endl; }

};

int main(){

    A a("good morning, code monkeys!");

    a.output();

    A b(a);

    b.output();

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: