第6周项目1.1深复制
来源:互联网 发布:2015年老龄化数据 编辑:程序博客网 时间:2024/05/21 14:52
/*
*Copyright (c) 2015,烟台大学计算机学院
*All rights reserved.
*文件名称:.cpp
*作者:孙旭明
*完成时间:2015年4月15号
*版本号: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)这样处理的意义在于: 定义一个动态数组,以便节约空间
strcpy(a, aa); //(b)数据成员a与形式参数aa的关系:将aa赋值于a
}
~A()
{
delete []a; //(c)这样处理的意义在于: 删除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;
}
(2)将注释(a)所在的那一行去掉,会出现什么现象?为什么?为什么a数据成员所占用的存储空间要在aa长度基础上加1?若指针a不是指向字符(即不作为字符串的地址),是否有必要加1?
(3)为类A增加复制构造函数,用下面的main函数测试
- int main()
- {
- A a("good morning, code monkeys!");
- a.output();
- A b(a);
- b.output();
- return 0;
- }
#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的关系:将aa赋值于a
}
A(A &b)
{
a = new char[strlen(b.a)+1];
strcpy(a,b.a);
}
~A()
{
delete []a; //(c)这样处理的意义在于: 删除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;
}
深复制,指针,字符串,数组,析构函数,
- 第6周项目1.1深复制
- 第6周项目1深复制
- 第6周项目1-深复制体验
- 第6周项目1深复制体验
- 第6周项目1深复制体验
- 第6周项目1-深复制体验(1)
- 第6周项目1-深复制体验(2)
- 第6周项目1-深复制体验(3)
- 2015-第6周项目1-深复制体验
- 第6周项目1深复制体验
- 第5周-项目1-深复制-复制构造函数
- 第6周项目1-深复制体验(增加复制构造函数)
- C++第7周(春)项目1 深复制体验
- 第07周:项目一:深复制体验
- 第07周:项目二:体验深复制函数
- 第5周-项目1-深复制体验
- 第5周-项目1-深复制纠错
- 第5周项目1-体验深复制(3)
- C++单例模式
- BP神经网络Python实现
- 省选模版复习——LCT
- 第五周项目5——友元类
- 第六周上机项目2我的数组类
- 第6周项目1.1深复制
- Codeforces Round #299 (Div. 2) -- (A,B,C)
- 图像操作的形态学处理MATLAB
- 第六周项目1 深复制体验
- android中的线程(二上)
- 第六周阅读程序2:构造函数与析构函数
- 省选模版复习——FFT
- 第六周 课后实践:阅读程序
- 第六周 程序阅读-深复制、友元、类模板(3)