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++中rapidjson将嵌套map转为嵌套json的讲解

    下面是“C++中rapidjson将嵌套map转为嵌套json的讲解”的完整攻略。 1. 背景介绍 在C++中,我们常常需要将数据结构转换为JSON字符串进行网络传输、存储等操作。但是嵌套的数据结构转化为JSON字符串时,可能会比较麻烦。本篇攻略将会讲解如何使用rapidjson库将嵌套的map转化为嵌套的JSON对象。 2. rapidjson库介绍 ra…

    C 2023年5月23日
    00
  • C语言如何利用ASCII码表统计字符串每个字符出现的次数

    如何利用ASCII码表统计字符串每个字符出现的次数? 初始化计数数组 首先,我们需要使用C语言定义一个计数数组。该数组用于存储ASCII码表中每一个字符出现的次数。由于ASCII码表中总共有128个字符,所以我们需要定义一个长度为128的数组。需要注意的是,数组中每一个元素的初始值都应该为0。 int count[128] = {0}; 遍历字符串 接下来,…

    C 2023年5月23日
    00
  • C语言实现输入ascii码,输出对应的字符方式

    下面是一份详细的攻略,教你如何在C语言中实现输入ASCII码,输出对应的字符的功能。 1. 了解ASCII码 ASCII码是一种将字符编码成二进制数的标准,在C语言中也是普遍使用的字符编码方式。它包括了数字、字母、符号等可打印字符,为每个字符分配了一个唯一的7位或8位二进制编码。 在C语言中,我们可以使用整数类型的变量存储ASCII码,并且通过printf(…

    C 2023年5月24日
    00
  • C语言实现程序开机自启动

    下面我为大家详细讲解如何使用C语言实现程序开机自启动的完整攻略。 1. 注册自启动 Windows 平台 在 Windows 平台上,我们需要在注册表中添加一项,来实现程序开机自启动。具体步骤如下: 打开注册表编辑器,定位到 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run。 在 …

    C 2023年5月23日
    00
  • C语言中条件编译详解

    关于“C语言中条件编译详解”的攻略,我会详细讲解如下: 什么是条件编译? 条件编译就是根据某些条件来判断编译是否要执行某个代码块,也就是说可以根据不同的条件来编译不同的程序。 条件编译的语法 在 C 语言中,我们使用预处理器来实现条件编译,其语法如下: #ifdef macro // do something #endif 其中,“#ifdef”是条件编译的…

    C 2023年5月23日
    00
  • c语言10个经典小程序

    下面是对“C语言10个经典小程序”的详细讲解,主要包括以下内容: 概述 经典小程序列表 完整攻略 示例说明 1. 概述 “C语言10个经典小程序”是一个非常有名的程序集,它包含了许多经典的C语言小程序。这些小程序都具有简单、实用、易于理解等特点,非常适合初学者学习和实践。 2. 经典小程序列表 计算n个整数的平均值 求解一元二次方程的根 按照ASCII码顺序…

    C 2023年5月24日
    00
  • PHP数组对象与Json转换操作实例分析

    PHP数组对象与Json转换操作实例分析 什么是PHP数组对象? 在PHP中,数组是一种集合类型,用于存储多个值。这些值可以是任何数据类型,包括字符串、数字、对象等。数组可以是索引数组或关联数组。 索引数组是基于数字索引的集合,每个元素都有一个数字索引。按照数组中定义元素的顺序分配索引。 关联数组是基于键的集合,每个元素都与一个指定的键关联。键可以是数字或字…

    C 2023年5月23日
    00
  • 基于C++实现酒店管理系统

    基于C++实现酒店管理系统攻略 一、需求分析 首先,我们需要了解酒店管理系统需要实现哪些功能模块。可以考虑以下几个: 系统登录和注册模块,包括管理员和用户登录; 酒店信息管理模块,包括酒店的添加、查询、修改和删除; 房间信息管理模块,包括房间的添加、查询、修改和删除; 客房预定模块,包括客房预订、入住和退房; 客人信息管理模块,包括客人信息的添加、查询、修改…

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