复习:上节作业讲解

注意点:

设计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天的更多相关文章

  1. PoEdu - C++阶段班【Po学校】- Lesson03-4_构造函数&赋值函数&拷贝构造函数&学习方式 - 第6天

    PoEdu - C++阶段班[Po学校]- 第6天 课堂选择题目: 1  关于转换构造函数  ClassDemo demo = 1;  调用转换构造函数 2  关于拷贝赋值函数  demo =2; 首 ...

  2. PoEdu - C++阶段班【Po学校】- 第3天

    引用 C中指针的功能强大,使用起来繁杂,因为指针要控制的东西太多:有指针的类型,指针的解引用,指针空间内的值,它本身是有空间的,有自己的地址等.指针也是强大的,比如:我们要在函数之内,修改方法之外的值 ...

  3. PoEdu - C++阶段班【Po学校】- 第1课

    1 C++开讲 C ++  伟大的编程语言:能提高程序运行效率,节约更多的资源,"正确的使用C++,能够抑制全球变暖问题". 2 C++能力雷达图 通过 1效率 2灵活度 3 抽象 ...

  4. PoEdu - C++阶段班- Lesson07 To Lesson10_C to C++

    07  重载导致的二义性 问题:为什么一定要重载呢?重载能方便我们注重函数的功能,当参数类型不确定时,我们能很便捷的利用重载的机制达到目的. 重载注意点:二义性 看代码: #include <c ...

  5. PoEdu - C++阶段班- Lesson02_C to C++

    1  原生bool类型 c++里面的bool类型才是真正原生的true和faul,比如常见的大写的"BOOL",它就不是原生的. 原生的与非原生的bool,它们的区别: 详细说下原 ...

  6. java类与对象_成员变量和局部变量区别

    成员变量和局部变量:1.成员变量:再类中定义,用来描述对象将要有什么.2.局部变量:在类的方法中定义,在方法中临时保存数据.区别:1.作用域不同:  局部:仅限于定义它的方法  成员:整个类中都是可见 ...

  7. c++中的类和对象_概念

    类:事物所具有的共性(行为.属性)抽象出来封装在一起 对象:由类型实例化出对象 c++与c struct的区别:c中不能存放函数,只能存放属性,方法和属性分离,c++中则可存放函数. c中表示事物的方 ...

  8. python基础----面向对象的程序设计(五个阶段、对小白的忠告、关于OOP常用术语)、类、对象

    一.面向对象的软件开发有如下几个阶段                                              1.面向对象分析(object oriented analysis ,O ...

  9. 大数据学习day14-----第三阶段-----scala02------1. 元组 2.类、对象、继承、特质 3.函数(必须掌握)

    1. 元组 映射是K/V对偶的集合,对偶是元组的最简单的形式,元组可以装着多个不同类型的值 1.1 特点 元组相当于一个特殊的数组,其长度和内容都可变,并且数组中可以装任何类型的数据,其主要用处就是存 ...

随机推荐

  1. __thread关键字[转]

    自 http://blog.csdn.net/liuxuejiang158blog/article/details/14100897 __thread是GCC内置的线程局部存储设施,存取效率可以和全局 ...

  2. Java日志——2016年5月30日

    1. 局部变量必须初始化,可以定义的同时初始化,也可以定义完成之后进行初始化. 2. Java7新特性:数字之间可以使用"_"连接,eg:23_44_5 = 23445,0B110 ...

  3. 利用Aspose.Pdf将扫描的电子书修改为适合在kindle上查看

    很多扫描版的电子书,留有很大的页边距,大屏的设备看起来没有啥影响,可是在kindle上看起来就麻烦了,放大操作简直就没法用,最好能把留白去掉. 将pdf文件转换为图片这个看看 例子里的 JpegDev ...

  4. EXCEL数据导入dataset

    一.开工必备 1.micorosoft office2007 2.VS2010.Oracle 11 二.界面 三.内部代码 (1)获取数据库连接,定义全局变量 private static strin ...

  5. oracle SQLPLUS 常用set设置

    SQL>set colsep' '; //-域输出分隔符 SQL>set echo off; //显示start启动的脚本中的每个sql命令,缺省为on SQL> set echo ...

  6. springmvc和http404错误

    今天解决一个java中的springmvc的问题,所有配置都是对的,主页面也能打得开,唯独Controller层的方法打不开,一直报http404错误 package com.gold.control ...

  7. VS2010项目的部署与安装

    VS2010项目的部署与安装 转自:http://www.cnblogs.com/smile-wei/archive/2012/07/06/2579607.html winform程序,我想进行安装. ...

  8. 高效Web开发的10个jQuery代码片段

    原文转载:http://www.codeceo.com/article/10-jquery-snippets-web-dev.html

  9. 介绍开源的.net通信框架NetworkComms框架之三 传递List

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  开源地 ...

  10. Dalvik指令格式

    一段Dalvik汇编代码由一系列Dalvik指令组成,指令语法由指令的位描述与指令格式 标识来决定.位描述约定如下: 每16位的字采用空格分隔开来每个字母表示四位,每个字母按顺序从高字节开始,排列到低 ...