C++泛型编程函(数模板+类模板)

对于C++泛型编程,我们可以使用模板来实现。在C++中,我们可以使用函数模板和类模板来实现泛型编程。

C++函数模板

C++函数模板是一种特殊的函数,它可以像参数一样的方式接受一种数据类型,并使代码对于任何数据类型都可用。其语法格式如下:

template <typename T>
return_type function_name (arguments) 
{
   // function code here
}
  • typename T 表示通用数据类型,我们可以使用任何类型的名称替换这里的T。
  • 然后是函数的返回类型和参数列表。
  • 在函数定义中,可以使用typename T替换实际数据类型。

接下来,让我们来看一个例子,用C++函数模板实现两个数相加。

#include<iostream>

using namespace std;

// 函数模板
template <typename T>
T add(T a, T b) {
    return a + b;
}

int main() {
    cout<< add<int>(2, 3) << endl;  // 输出5
    cout<< add<float>(1.2, 2.3) << endl; // 输出3.5
    cout<< add<char>('A', 'B') << endl; // 输出131
    return 0;
}

C++类模板

C++类模板也是一种特殊的类,它可以像参数一样的方式接受一种数据类型,并使代码对于任何数据类型都可用。语法格式如下:

template <typename T>
class class_name
{
    // class code here
};

接下来,让我们来看一个例子,用C++类模板实现一个计算器。这个计算器可以用于整数、浮点数和复数的运算。

#include<iostream>

using namespace std;

//类模板
template <typename T>
class Calculator {
public:
    T add(T x, T y) {
        return x + y;
    }

    T subtract(T x, T y) {
        return x - y;
    }

    T multiply(T x, T y) {
        return x * y;
    }

    T divide(T x, T y) {
        if (y != 0) return x / y;   
        throw "Division by zero";
    }
};

int main() {
    // 整数计算器
    Calculator<int> intCalc;
    cout<< intCalc.add(2, 3) << endl;  // 输出5
    cout<< intCalc.subtract(2, 3) << endl; // 输出-1
    cout<< intCalc.multiply(2, 3) << endl; // 输出6
    cout<< intCalc.divide(6, 3) << endl; // 输出2

    // 浮点数计算器
    Calculator<float> floatCalc;
    cout<< floatCalc.add(1.2, 2.3) << endl; // 输出3.5
    cout<< floatCalc.subtract(1.2, 2.3) << endl; // 输出-1.1
    cout<< floatCalc.multiply(1.2, 2.3) << endl; // 输出2.76
    cout<< floatCalc.divide(4.8, 2.4) << endl; // 输出2

    // 复数计算器
    // 复数的运算需要重载运算符,这里就不做示例了

    return 0;
}

以上就是C++函数模板和类模板的基本用法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++泛型编程函(数模板+类模板) - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C++ 再识类和对象

    C++中,对象是一种特别的变量,它是类的一个实例。类是一种定义对象的模板,它包括数据和各种方法。在本篇文章中,我们将会详细讲解C++中的类和对象,让你更好地理解它们的用法和原理。 定义类 C++是一种面向对象的编程语言,其中类是面向对象的一个基本概念。我们可以使用以下方式定义一个类: class Student { public: //公有的成员函数 voi…

    C 2023年5月22日
    00
  • C++文件的操作及小实验示例代码详解

    接下来我将为你详细讲解C++文件的操作及小实验示例代码详解。 C++文件的操作 C++文件的操作是指在程序中对文件进行读取、写入、追加和删除等操作。在C++中,可以通过fstream库来实现文件的操作。fstream库包括以下三个类:ifstream,ofstream和fstream。其中,ifstream和ofstream分别用于读取和写入文件,fstre…

    C 2023年5月22日
    00
  • 基于C++自动化编译工具的使用详解

    基于C++自动化编译工具的使用详解 什么是自动化编译工具 自动化编译工具可以帮助我们简化编译过程,减少手动操作,提高编译效率,节省时间。目前常见的一些自动化编译工具有Makefile、CMake、SCons等。 其中,Makefile是最原始、最传统的自动化编译工具,他是通过规定一系列源文件、头文件、编译参数、依赖关系等,使代码能够被快速编译成可执行文件。 …

    C 2023年5月23日
    00
  • C语言实现学生学籍管理系统程序设计

    C语言实现学生学籍管理系统程序设计 前言 学生学籍管理系统是一款常见的管理软件,它主要用于记录学生的个人信息和学习情况,方便教师和学校管理。C语言是一种常用的计算机编程语言,可以用来编写各种各样的软件,包括学生学籍管理系统。 设计思路 学生学籍管理系统主要包括学生信息和成绩管理两个部分。我们可以采用结构体来存储学生的信息,采用数组来存储学生成绩。具体的设计思…

    C 2023年5月23日
    00
  • Visual Studio 2022最新版安装教程(图文详解)

    Visual Studio 2022最新版安装教程(图文详解) 1. 下载 Visual Studio 2022 首先,前往官方网站 Visual Studio 下载Visual Studio 2022。 2. 运行安装程序 下载完毕后,运行安装程序: 如果您下载的是 .exe 文件,则双击该文件以运行安装程序; 如果您下载的是 .iso 文件,则您需要使用…

    C 2023年5月23日
    00
  • linux下使用g++编译cpp工程的方法

    在Linux下使用g++编译cpp工程的方法共分为以下几个步骤: 1. 安装g++ 在终端输入以下命令安装g++: sudo apt-get update sudo apt-get install g++ 2. 准备工程文件 创建一个名为my_project的文件夹,在其下创建三个cpp文件,分别为main.cpp、function1.cpp和functio…

    C 2023年5月23日
    00
  • C++内存管理详细解析

    C++内存管理详细解析攻略 C++是一门广泛使用的高级编程语言,内存管理是C++程序设计中的重要内容。C++内存管理涉及到内存的分配、使用和释放。本文将对C++内存管理进行详细解析,并提供两个代码示例作为补充。 堆栈内存分配方式 C++内存主要有两种分配方式,分别是堆内存和栈内存。堆内存由程序员手动分配和释放,而栈内存由系统自动分配和释放。 堆内存 程序员手…

    C 2023年5月23日
    00
  • C 标准库 ctype.h

    ctype.h 是 C 标准库中的一个头文件,提供了一些用于字符处理的函数。这里详细讲解一下它的使用方法。 ctype.h 头文件的引入 为了使用 ctype.h 头文件,需要在程序中包含它。可以使用以下代码引入: #include <ctype.h> 一些常用的 ctype.h 函数 isalnum() 此函数用于检查字符是否是字母或数字。如果…

    C 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部