PoEdu - C++阶段班【Po学校】- Lesson02_类与对象_第4天
复习:上节作业讲解
注意点:
设计SetString()的时候,要注意重置原来的空间。
char * SetString(const char *str)
{
_len = strlen(str);
delete[]_str;
_str=new char[_len + sizeof(char)];
strcpy(_str,str);
}
字符串数组中,赋值新的字符串之前,要重置先前的空间,重新new一块空间。

一定要注意内存泄漏的问题。
MyArray()函数实现:
私有的数据,设计为了安全。举例银行里面的钱。
注意:尝试对一个空指针操作,在某些编译器上会报错

正确的写法,要加上判断
~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的时候,返回什么呢?函数返回的是一个引用,那么抛出一个什么呢?抛出它本身?那也不是我们想要的,只能抛出异常。

课堂中,这个问题先暂时放在这里,以后有更好的方式方法来解决。
来设计 AddData()时,发现:增加的时候,重新new多少空间呢?我们不知道,因为类中只设计了数组长度_len,_len有没有用完,我们也不知道,那么,有必要设计一个数组实际使用个数的记录_index。

初始化的时候,注意指针的初始化。如果设计为空指针,以后的调用会很成问题,对一个空指针的操作会报错。
还有数组的长度,_len默认最好是有个数值。

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

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指针空间里面存放的是些什么:

this它的值就是对象所在内存空间的地址头。
方法也有const方法

当方法里面不改变里面参数的值的时候,此方法可以设置成const方法,const方法能够被const对象调用。const对象只能调用const方法。
如果方法内部,已经改变了值的,就不能随便的就把方法加上const,以求编译通过,因为加了const表示的“语义”已经改变。const的语义代表:不能被修改,只读的。
PoEdu - C++阶段班【Po学校】- Lesson02_类与对象_第4天的更多相关文章
- PoEdu - C++阶段班【Po学校】- Lesson03-4_构造函数&赋值函数&拷贝构造函数&学习方式 - 第6天
PoEdu - C++阶段班[Po学校]- 第6天 课堂选择题目: 1 关于转换构造函数 ClassDemo demo = 1; 调用转换构造函数 2 关于拷贝赋值函数 demo =2; 首 ...
- PoEdu - C++阶段班【Po学校】- 第3天
引用 C中指针的功能强大,使用起来繁杂,因为指针要控制的东西太多:有指针的类型,指针的解引用,指针空间内的值,它本身是有空间的,有自己的地址等.指针也是强大的,比如:我们要在函数之内,修改方法之外的值 ...
- PoEdu - C++阶段班【Po学校】- 第1课
1 C++开讲 C ++ 伟大的编程语言:能提高程序运行效率,节约更多的资源,"正确的使用C++,能够抑制全球变暖问题". 2 C++能力雷达图 通过 1效率 2灵活度 3 抽象 ...
- PoEdu - C++阶段班- Lesson07 To Lesson10_C to C++
07 重载导致的二义性 问题:为什么一定要重载呢?重载能方便我们注重函数的功能,当参数类型不确定时,我们能很便捷的利用重载的机制达到目的. 重载注意点:二义性 看代码: #include <c ...
- PoEdu - C++阶段班- Lesson02_C to C++
1 原生bool类型 c++里面的bool类型才是真正原生的true和faul,比如常见的大写的"BOOL",它就不是原生的. 原生的与非原生的bool,它们的区别: 详细说下原 ...
- java类与对象_成员变量和局部变量区别
成员变量和局部变量:1.成员变量:再类中定义,用来描述对象将要有什么.2.局部变量:在类的方法中定义,在方法中临时保存数据.区别:1.作用域不同: 局部:仅限于定义它的方法 成员:整个类中都是可见 ...
- c++中的类和对象_概念
类:事物所具有的共性(行为.属性)抽象出来封装在一起 对象:由类型实例化出对象 c++与c struct的区别:c中不能存放函数,只能存放属性,方法和属性分离,c++中则可存放函数. c中表示事物的方 ...
- python基础----面向对象的程序设计(五个阶段、对小白的忠告、关于OOP常用术语)、类、对象
一.面向对象的软件开发有如下几个阶段 1.面向对象分析(object oriented analysis ,O ...
- 大数据学习day14-----第三阶段-----scala02------1. 元组 2.类、对象、继承、特质 3.函数(必须掌握)
1. 元组 映射是K/V对偶的集合,对偶是元组的最简单的形式,元组可以装着多个不同类型的值 1.1 特点 元组相当于一个特殊的数组,其长度和内容都可变,并且数组中可以装任何类型的数据,其主要用处就是存 ...
随机推荐
- GET与POST的区别
转自http://blog.csdn.net/darxin/article/details/4944225#comments HTTP请求的GET与POST方式的本质区别可以参考hyddd在<浅 ...
- ASP.NET MVC WEBAPI第一次接触
asp.net 的MVC4 WEBAPI的出现已经有段时间了.最近因为做自己的一些小玩儿,要做一个API,正好可以学习一下这个WEBAPI. WEBAPI项目的创建我就不啰嗦,先来看看webapi的路 ...
- drawing
/* 程序名:drawing..c 功能:展示OpenCV的图像绘制功能 */ #include "cv.h" #include "highgui.h" #in ...
- Selenium自动化测试框架介绍
Selenium自动化测试框架介绍 1.测试架构作用 a.可维护性 b.提高编写脚本效率 c.提高脚本的可读性 2.框架的几大要素: Driver管理,脚本,数据,元素对象,LOG,报告,运行机制,失 ...
- Go Data Structures: Interfaces
refer:http://research.swtch.com/interfaces Go Data Structures: Interfaces Posted on Tuesday, Decembe ...
- json与对象转化
/// <summary> /// 把JSON字符串还原为对象 /// </summary> /// <typeparam name="T">对 ...
- 使用FreePic2Pdf导出书签至Word建立层级目录——快速初始化Word笔记本目录
使用FreePic2Pdf导出书签至Word建立层级目录 --快速初始化Word笔记本目录 文:安徽师范大学2014级计算机科学与技术 王昊 (Get Contact:441301158@qq.com ...
- C++函数CString类常用函数
C++ STL库里有很多与字符串操作相关的函数,熟练应用STL,字符串的处理将变得轻松.自在. 字符串截取函数: 1.CString Left( int nCount ) const; //从左 ...
- 使用小米天气API获取天气信息
1. URL部分 以下url中"%s"代表的是城市Id,比如北京的cityId=101010100: //获取未来五天预报信息,红色部分信息不需要 WEATHER_DATA_URL ...
- excel将单元格格式由数字转为文本
由于python读取excel数据时,整数总会变成浮点数,例如1会变成1.0,这时可以通过将excel里面的数字转化为文本,再读取出来就不会变成浮点数了.还有一种情况是excel里面的数字是由公式计算 ...