2.1 内置数组数据类型
介绍数组的基本概念,和别的C++书籍没什么区别
2.2 动态内存分配和指针
讲述静态分配、动态分配的概念
静态分配就是在编译时由编译器分配的内存区域
该区域的回收由编译器负责
动态分配就是在运行时用 new 分配的
该区域需要用 delete 来回收
静态分配的是有命名的,动态分配的无命名因此需要通过指针来访问
删除一个数组对象 delete [] object;
2.3 基于对象的设计
讲述针对内置数组数据类型的各种不足之处,如何创建一个基于对象的数组
有一新概念以前没听过,类的拷贝构造函数,下面的用法将使用到拷贝构造函数
IntArray array;
IntArray ia1 = array;
IntArray ia2( array );
还有一个地方需要用到拷贝构造函数,当对象作为传值参数时。。。不知道对不对
2.4 面向对象的设计
讲述类的继承概念
构造函数的参数如何传递给基类
IntArrayRC::IntArrayRC( int sz ) : IntArray( sz ){....}
冒号后面直到花扩号之间的叫做成员初始化列表
2.5 泛型设计
模版一种机制,可以将类、函数的内部的类型和值参数化
简单的来看就是作为代码中的占位符,当实例化时用编译器用实际的类型替换该占位符
template <class elemType>
class Array{
public:
explicit Array( int size = DefaultArraySize );
Array( elemType *array, int array_size );
Array( const Array &rhs );
virtual ~Array() { delete [] ia; }
bool operator==( const Array& ) const;
bool operator!=( const Array& ) const;
Array& operator=( const Array& );
int size() const { return _size; }
virtual elemType& operator[]( int index ) { return ia[ index ]; }
virtual void sort();
virtual elemType min() const;
virtual elemType max() const;
virtual int find( const elemType &value ) const;
private:
static const int DefaultArraySize = 12;
int _size;
elemType *ia;
}
以上用模版定义的类,下面是该类的应用
#include <iostream>
#include “Array.h”
int main()
{
const int array_size = 4;
Array<int> ia(array_size);
Array<double> da(array_size);
Array<char> ca(array_size);
int ix;
for ( ix = 0; ix < array_size; ++ix ){
ia[ ix ] = ix;
da[ ix ] = ix * 1.75;
ca[ ix ] = ix + 'a';
}
for ( ix = 0; ix < array_size; ++ix )
cout << “[” << ix << “] ia: ” << ia[ ix ]
<< “\tca: “ << ca[ ix ]
<< “\tda: “ << da[ ix ] << endl;
return 0;
}
模版的应用在类继承的时候
template <class elemType>
class ArrayRC : public Array<elemType>{
public:
...
}
这一节比较重要,以前看的C++输没讲到这概念,感觉很有用,要看看别人的学习纪录
2.6 基于异常的设计