/*
*Copyright(c)2016,烟台大学计算机与控制工程学院
*All right reserved.
*文件名称:main.cpp
*作 者:闫舒
*完成日期:2016年6月12日
*版 本 号:Code::Blocks 12.11</span>
*
*问题描述:补足未完成的解释
*程序输入:
*程序输出:字符串
*/
#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);//数据成员a与形式参数aa的关系:公用一块内存
}
~A()
{
delete[]a;//这样处理的意义在于:释放为a开辟的空间
}
void output(){cout<<a<<endl;}
};
int main()
{
A a("good morning,code monkeys!");
a.output();
A b("good afternoon,codes!");
b.output();
return 0;
}
运行结果:
<img src="https://img-blog.csdn.net/20160612204140803?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
知识点总结:深复制是直接给数据成员赋值。
学习心得:为字符串指针分配空间时记得加1,因为\0也为一个字节。另外:a=new char[strlen(aa)+1];//(a)这样处理的意义在于:为字符串开辟一段地址来储存字符串。 不可以删去,否则会成为野指针。