C++ Array 类模板实现:定义、成员函数和测试示例

本文将演示如何使用 C++ 模板实现一个通用的 Array 类,方便创建不同数据类型的数组。我们将定义必要的成员函数,包括构造函数、析构函数、复制构造函数、getAt 和 setAt 函数,并在示例代码中展示如何创建 int 和 double 类型的数组对象,并为其赋值和输出内容。

代码实现

#include<iostream>
using namespace std;

template<typename T>
class Array {
private:
    T* data;
    int size;

public:
    // 构造函数
    Array(int size) {
        this->size = size;
        data = new T[size];
    }

    // 析构函数
    ~Array() {
        delete[] data;
    }

    // 复制构造函数
    Array(const Array& other) {
        size = other.size;
        data = new T[size];
        for (int i = 0; i < size; i++) {
            data[i] = other.data[i];
        }
    }

    // 获取指定位置的元素
    T getAt(int index) const {
        if (index >= 0 && index < size) {
            return data[index];
        }
        else {
            cout << 'Invalid index!' << endl;
            return T();
        }
    }

    // 设置指定位置的元素
    void setAt(int index, T value) {
        if (index >= 0 && index < size) {
            data[index] = value;
        }
        else {
            cout << 'Invalid index!' << endl;
        }
    }
};

int main() {
    // 创建int型数组对象
    Array<int> intArray(5);
    intArray.setAt(0, 1);
    intArray.setAt(1, 2);
    intArray.setAt(2, 3);
    intArray.setAt(3, 4);
    intArray.setAt(4, 5);

    // 输出int型数组元素
    cout << 'intArray: ';
    for (int i = 0; i < 5; i++) {
        cout << intArray.getAt(i) << ' ';
    }
    cout << endl;

    // 创建double型数组对象
    Array<double> doubleArray(5);
    doubleArray.setAt(0, 1.1);
    doubleArray.setAt(1, 2.2);
    doubleArray.setAt(2, 3.3);
    doubleArray.setAt(3, 4.4);
    doubleArray.setAt(4, 5.5);

    // 输出double型数组元素
    cout << 'doubleArray: ';
    for (int i = 0; i < 5; i++) {
        cout << doubleArray.getAt(i) << ' ';
    }
    cout << endl;

    return 0;
}

代码解释

  1. 模板定义:

    template<typename T>
    class Array {
    // ...
    };
    

    使用 template<typename T> 语法定义 Array 类模板,允许创建不同数据类型的数组对象。

  2. 成员变量:

    private:
        T* data;
        int size;
    
    • data 是一个指向数组元素的指针,用于存储数组数据。
    • size 表示数组的大小。
  3. 构造函数:

    Array(int size) {
        this->size = size;
        data = new T[size];
    }
    

    构造函数接受数组大小作为参数,分配内存并初始化数组。

  4. 析构函数:

    ~Array() {
        delete[] data;
    }
    

    析构函数用于释放动态分配的内存。

  5. 复制构造函数:

    Array(const Array& other) {
        size = other.size;
        data = new T[size];
        for (int i = 0; i < size; i++) {
            data[i] = other.data[i];
        }
    }
    

    复制构造函数用于创建新的 Array 对象,并复制另一个 Array 对象的内容。

  6. getAt 函数:

    T getAt(int index) const {
        if (index >= 0 && index < size) {
            return data[index];
        }
        else {
            cout << 'Invalid index!' << endl;
            return T();
        }
    }
    

    getAt 函数接受一个索引作为参数,返回对应索引处的元素值。如果索引无效,则输出错误信息并返回默认值。

  7. setAt 函数:

    void setAt(int index, T value) {
        if (index >= 0 && index < size) {
            data[index] = value;
        }
        else {
            cout << 'Invalid index!' << endl;
        }
    }
    

    setAt 函数接受一个索引和一个值作为参数,将指定索引处的元素值设置为给定值。如果索引无效,则输出错误信息。

  8. 主函数测试: 主函数展示了如何创建 int 和 double 类型的数组对象,并为其赋值和输出内容。

总结

本文介绍了如何使用 C++ 模板实现一个通用的 Array 类,并提供了使用 int 和 double 类型创建数组对象的测试示例。该 Array 类模板可以方便地用于创建不同数据类型的数组对象,并提供了一系列成员函数,方便操作数组元素。

C++ Array 类模板实现:定义、成员函数和测试示例

原文地址: https://www.cveoy.top/t/topic/qd4c 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录