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

类别:编程语言 点击:0 评论:0 推荐:
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 基于异常的设计

本文地址:http://com.8s8s.com/it/it26461.htm