查看: 64|回复: 0

#《Essential C++》读书笔记# 第六章 以template进行编程

[复制链接]
发表于 2020-2-15 21:53:16 | 显示全部楼层 |阅读模式
练习题答案

练习6.1 试改写以下类,使它成为一个class template:
  1. class example{public:    example(double min, double max);    example(const double* array, int size);    double& operator[](int index);    bool operator==(const example&) const;    bool insert(const double*, int);    bool insert(double);    double min() const { return _min; }    double max() const { return _max; }    void min(double);    void max(double);    int count(double value) const;private:    int size;    double* parray;    double _min;    double _max;};
复制代码
改写后:
  1. template class example{public:    example(const elemType& min, const elemType& max);    example(const elemType* array, int size);    elemType& operator[](int index);    bool operator==(const example&) const;    bool insert(const elemType*, int);    bool insert(const elemType&);    elemType min() const { return _min; }    elemType max() const { return _max; }    void min(const elemType&);    void max(const elemType&);    int count(const elemType& value) const;private:    int _size;    elemType* _parray;    elemType _min;    elemType _max;};
复制代码
练习6.2 重新以template形式实现练习4.3的Matrix class,并扩充其功能,使它可以或许通过通过heap memory(堆内存)来支持恣意行列大小。分配/释放内存的操作,请在constructor/destructor中进行。
[code]Matrix.h#ifndef MATRIX_H #define MATRIX_H #include using namespace std;template class Matrix;template class Matrix{    friend Matrix operator+  (const Matrix&, const Matrix&);    template     friend Matrix operator*  (const Matrix&, const Matrix&);public:    Matrix(int rows, int columns);    Matrix(const Matrix&);    ~Matrix() { delete[] _matrix; }    Matrix& operator=(const Matrix&);    void operator+= (const Matrix&);    elemType& operator()(int row, int column)    {        return _matrix[row * cols() + column];    }        const elemType& operator()(int row, int column) const    {        return _matrix[row * cols() + column];    }    int rows() const { return _rows; }    int cols() const { return _cols; }    bool same_size(const Matrix& m) const    {        return rows() == m.rows() && cols() == m.cols();    }    bool comfortable(const Matrix& m) const    {        return (cols() == m.rows());    }    ostream& print(ostream&) const;protected:    int _rows;    int _cols;    elemType* _matrix;};template inline ostream& operator

相关技术服务需求,请联系管理员和客服QQ:2753533861或QQ:619920289
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:2753533861

服务时间 9:00-22:00

快速回复 返回顶部 返回列表