C++学习笔记 lesson2 类和对象
2017-01-02 20:15
459 查看
可变长数组举例
#include<cstringt.h> //可变长数组 // new delete 更改长度 new新空间 , copy旧空间 , delete旧空间 // malloc free relloc 分配起来更简单 class MyArray { public: MyArray(const size_t len=10)//给初始长度 { _index = 0; _len = len; _data = new int[_len]; } ~MyArray() { if (_data) delete[]_data; } int GetData(const size_t index) const { if (_len > index) return _data[index]; return 0; } void SetData(const size_t index, const int num) { if (_len > index) _data[index] = num; } unsigned int GetLen() const //有效的长度 返回_index { return _index; } void AddData(const int num) //可以把Add和set合并 { if (_index >= _len) { _len = _index * 2; int *temp = new int[_len];//每次分配*2的空间 memcpy(temp, _data, _index*sizeof(int)); delete[]_data; _data = temp; } _data[_index++] = num; // index后++ ,否则无_data[0] } void AddData(const MyArray&data) //增加自身对象 { for (unsigned int i = 0; i < data._index; ++i) { //const 方法能够被const对象调用, const对象只能调用const方法 AddData(data.GetData(i));//不能将“this”指针 每一个对象里面的隐藏属性,每一个对象都有 //this 是一个对象的代名词,区分不同的对象 //每一个类里面,为了区分每一个对象,会默认包含一个this指针 // } } void AddData(const int *data,const unsigned int ) //增加数组,需要长度参数 { for (int i = 0; i < _len; i++) { AddData(data[i]); } }//写函数的重载时,会相互调用,节约代码量 /*int& Index( const size_t index) { if (index<_len) return _data[index]; } 使用引用直接返回,返回index>len的情况不方便表示*/ private: int *_data; unsigned int _len; //已经分配的空间 unsigned int _index; //已经使用的空间 };
相关文章推荐
- 《面向对象基础:C++实现》学习笔记之四
- 《面向对象基础:C++实现》学习笔记之七
- C++对象工厂模式:ObjectFactory学习笔记
- Inside The C++ Object Model 学习笔记 -- 关于对象
- C++对象模型学习笔记(二)--默认构造函数
- 《面向对象基础:C++实现》学习笔记之五
- C++学习笔记1--类和对象
- Effective c++ 学习笔记——条款04:确定对象被使用前已先被初始化
- C++之面向对象学习笔记01
- 《面向对象基础:C++实现》学习笔记之六
- C++学习笔记(13)——利用对象、引用、指针调用虚函数
- C++学习笔记(6)——多重继承类对象的构造函数参数的传递方法
- C++学习笔记 数组对象
- 《面向对象基础:C++实现》学习笔记之一
- C++学习笔记之(对象复制的困惑)
- c++入门学习笔记--类和对象
- 深度探索C++对象模型学习笔记——Function语意学
- Effective C++学习笔记:必须返回一个对象时不要试图返回一个引用
- 2012/1/22 《C++ Primer Plus》第十章:对象和类 学习笔记
- C++学习笔记序列之对象和类