C++ Primer 学习笔记(第二章)

王朝c/c++·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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 基于异常的设计

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航