温馨提示×

Ubuntu C++如何使用模板类和函数

小樊
37
2025-11-27 11:03:49
栏目: 编程语言

在C++中,模板是一种强大的特性,它允许你编写与类型无关的代码。模板可以用于创建模板类和模板函数。下面是如何在Ubuntu环境下使用模板类和函数的简单示例。

模板函数

首先,我们来看一个模板函数的例子。假设你想写一个函数来交换两个变量的值,而不关心它们的类型。你可以使用模板来实现这一点:

#include <iostream>

// 模板函数,用于交换两个变量的值
template <typename T>
void swapValues(T& a, T& b) {
    T temp = a;
    a = b;
    b = temp;
}

int main() {
    int x = 10, y = 20;
    std::cout << "Before swap: x = "<< x << ", y = "<< y << std::endl;
    swapValues(x, y); // 使用模板函数交换x和y的值
    std::cout << "After swap: x = "<< x << ", y = "<< y << std::endl;

    double a = 1.5, b = 2.5;
    std::cout << "Before swap: a = "<< a << ", b = "<< b << std::endl;
    swapValues(a, b); // 使用模板函数交换a和b的值
    std::cout << "After swap: a = "<< a << ", b = "<< b << std::endl;

    return 0;
}

将上述代码保存到文件swap.cpp中,然后在Ubuntu终端中使用以下命令编译和运行它:

g++ -o swap swap.cpp
./swap

模板类

接下来,我们来看一个模板类的例子。假设你想创建一个简单的数组类,它可以存储任何类型的元素。你可以使用模板来实现这一点:

#include <iostream>

// 模板类,用于表示一个动态数组
template <typename T>
class Array {
private:
    T* data; // 指向动态数组的指针
    size_t size; // 数组的大小

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

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

    // 获取数组大小
    size_t getSize() const {
        return size;
    }

    // 重载下标运算符
    T& operator[](size_t index) {
        return data[index];
    }

    // 常量版本的重载下标运算符
    const T& operator[](size_t index) const {
        return data[index];
    }
};

int main() {
    Array<int> intArray(5); // 创建一个可以存储5个整数的数组
    intArray[0] = 1;
    intArray[1] = 2;
    std::cout << "First element of intArray: " << intArray[0] << std::endl;

    Array<std::string> stringArray(3); // 创建一个可以存储3个字符串的数组
    stringArray[0] = "Hello";
    stringArray[1] = "World";
    std::cout << "First element of stringArray: " << stringArray[0] << std::endl;

    return 0;
}

将上述代码保存到文件array.cpp中,然后在Ubuntu终端中使用以下命令编译和运行它:

g++ -o array array.cpp
./array

这些示例展示了如何在Ubuntu环境下使用模板类和函数。你可以根据自己的需求修改和扩展这些示例。

0