首页 技术 正文
技术 2022年11月17日
0 收藏 823 点赞 4,869 浏览 1208 个字

复习:上节作业讲解

注意点:

设计SetString()的时候,要注意重置原来的空间。

char * SetString(const char *str)
{
_len = strlen(str);
delete[]_str;
_str=new char[_len + sizeof(char)];
strcpy(_str,str);
}

字符串数组中,赋值新的字符串之前,要重置先前的空间,重新new一块空间。

PoEdu – C++阶段班【Po学校】- Lesson02_类与对象_第4天

一定要注意内存泄漏的问题。


MyArray()函数实现:

私有的数据,设计为了安全。举例银行里面的钱。

注意:尝试对一个空指针操作,在某些编译器上会报错

PoEdu – C++阶段班【Po学校】- Lesson02_类与对象_第4天

正确的写法,要加上判断

~MyArray()
{
if(_data)delete []_data;
}

函数的选择,new  delete  和C中的 malloc free relloc  只有最适合的函数,不存在只用哪种风格

写到这里,注意:引用 的局限  

int & Index(const std::size_t index)
{
if(index < _len)
return _data[index];
//抛出异常
}

上面的代码,如果index不小于_len的时候,返回什么呢?函数返回的是一个引用,那么抛出一个什么呢?抛出它本身?那也不是我们想要的,只能抛出异常。

PoEdu – C++阶段班【Po学校】- Lesson02_类与对象_第4天

课堂中,这个问题先暂时放在这里,以后有更好的方式方法来解决。

来设计 AddData()时,发现:增加的时候,重新new多少空间呢?我们不知道,因为类中只设计了数组长度_len,_len有没有用完,我们也不知道,那么,有必要设计一个数组实际使用个数的记录_index。

PoEdu – C++阶段班【Po学校】- Lesson02_类与对象_第4天

初始化的时候,注意指针的初始化。如果设计为空指针,以后的调用会很成问题,对一个空指针的操作会报错。

还有数组的长度,_len默认最好是有个数值。

PoEdu – C++阶段班【Po学校】- Lesson02_类与对象_第4天

如果要增加数组本身里面的数据到数组里面,怎么设计?或者我直接加一个数组进来,怎么做?

PoEdu – C++阶段班【Po学校】- Lesson02_类与对象_第4天

void AddData(const Myarray & data)
{
for(unsigned int i = ; i < data._index; ++i)
{
AddData(data.GetData(i));
}
}

this指针

每一个对象里面都隐藏着一个this指针,使用this来区分不同的对象。this就是一个对象的代名词,和类是没有关系的。因为类是“设计图纸”,是机器人的“构造图纸”,类没有new空间,所以this就和类没有关系,this 这个指针所指向的是对象本身。

我们可以用内存看看this指针空间里面存放的是些什么:

PoEdu – C++阶段班【Po学校】- Lesson02_类与对象_第4天

this它的值就是对象所在内存空间的地址头。

方法也有const方法

PoEdu – C++阶段班【Po学校】- Lesson02_类与对象_第4天

当方法里面不改变里面参数的值的时候,此方法可以设置成const方法,const方法能够被const对象调用。const对象只能调用const方法。

如果方法内部,已经改变了值的,就不能随便的就把方法加上const,以求编译通过,因为加了const表示的“语义”已经改变。const的语义代表:不能被修改,只读的。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,086
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,561
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,411
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,184
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,820
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,904