返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++ 类模板与成员函数模板示例解析
  • 661
分享到

C++ 类模板与成员函数模板示例解析

C++ 类模板成员函数模板C++ 类模板成员函数模板 2023-01-03 18:01:52 661人浏览 安东尼
摘要

目录类模板类模板与成员函数模板的区别类模板 前面以函数模板为例,介绍了具体化与实例化。那么对于类模板,有什么不同呢? 类包括成员变量和成员函数,他们都可以包含类模板的模板参数。而成

类模板

前面以函数模板为例,介绍了具体化与实例化。那么对于类模板,有什么不同呢?

类包括成员变量和成员函数,他们都可以包含类模板的模板参数。而成员函数本身也可以是函数模板。看下面的两个类:

// 类模板
template <typename T>
class A {
private:
    T t;
public:
    void funcA(T t);
};
template <typename T>
void A<T>::funcA(T t) {
    cout << t;
}
// 成员函数模板
class B {
private:
    int t;
public:
    template <typename T>
    void funcB(T t);
};
template <typename T>
void B::funcB(T t) {
    cout << t;
}
int main()
{
    A<int> a1;
    a1.funcA(1);
    A<char*> a2;
    a2.funcA("2");
    B b;
    b.funcB(1);
    b.funcB("2");
}

类模板A中包含成员函数funcA;类B包含一个成员函数模板funcB。我们仔细看下二者的区别。

类模板与成员函数模板的区别

首先,类模版A中的成员函数的类型可以用类模板参数T,而成员函数模板做不到。

其次,在调用成员函数时,类模板A需要先指定一种类型创建一个实例对象(如代码中的a1),然后才能调用成员函数,a1.funcA只能传入int类型参数。如果想传char*类型参数,必须用char*创建一个实例(代码中的a2)。

而对于类B,则创建一个实例对象(b)之后,可以任何类型作为参数来调用funcB。

只要明白了前面讲的模板实例化,这里面的原因也很好理解。对于A来说,整个类是一个模版,当使用int类型生成对象a1时,也会对类模板A进行实例化,生成A类,其中所有的T都会替换为int,因此生成的类只有一个成员函数 void funcA(int)。如果想传入char*,则必须实例化A<char*>这个类。

而对于类B,它本身只是一个普通类,只不过它包含一个成员函数模板。当编译器发现代码中有调用这个成员函数funcB(int),编译时会为funcB实例化;如果也有调用funcB(char*),则会为B生成funcB<char*>成员函数。也就是说,类B的成员函数的数量不是确定的,是根据funcB被调用的情况来决定到底实例化出多少个成员函数。

以上就是c++ 类模板与成员函数模板示例解析的详细内容,更多关于C++ 类模板成员函数模板的资料请关注编程网其它相关文章!

--结束END--

本文标题: C++ 类模板与成员函数模板示例解析

本文链接: https://lsjlt.com/news/176550.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++ 类模板与成员函数模板示例解析
    目录类模板类模板与成员函数模板的区别类模板 前面以函数模板为例,介绍了具体化与实例化。那么对于类模板,有什么不同呢? 类包括成员变量和成员函数,他们都可以包含类模板的模板参数。而成...
    99+
    2023-01-03
    C++ 类模板成员函数模板 C++ 类模板成员函数模板
  • C++模板基础之函数模板与类模板实例详解
    目录泛型编程 函数模板 函数模板的概念 函数模板的格式 函数模板的原理 函数模板的实例化 函数模板的匹配原则 类模板 类模板的定义格式 类模板的实例化 总结泛型编程  ...
    99+
    2024-04-02
  • C++函数模板和类模板分析
    本篇内容介绍了“C++函数模板和类模板分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.函数模板函数模板定义了参数化的非成员函数,这使得...
    99+
    2023-06-17
  • 浅析C++函数模板和类模板
    目录一、函数模板1、函数模板的定义和使用2、函数模板的编译原理3、函数模板的声明二、类模板1、类模板的定义和使用2、类模板的编译原理3、类模板的继承和派生C++语言全盘继承了C语言的...
    99+
    2024-04-02
  • C++类模板与函数模板基础详细讲解
    目录函数模板类模板总结函数模板 当我们想要定义一个可以支持泛型的函数时,就要采用函数模板的方式了。所谓泛型就是可以支持多种类型的操作,比如我们定义一个compare操作,他可以根据传...
    99+
    2022-11-13
    C++类模板 C++函数模板
  • C++ 函数模板和类模板详情
    目录1. 泛型编程 2. 函数模板 2.1 函数模板概念 2.2 函数模板格式化 2.3 函数模板原理 2.4 函数模板实例化 2.5 模板参数的匹配原理 3. 类模板 3.1 类模...
    99+
    2024-04-02
  • C++泛型编程函(数模板+类模板)
    目录一、函数模板1.函数模板介绍2.函数模板与重载函数的关系3.函数模板实现机制二、类模板1.类模板基本语法2.类模板内函数的整体布局【分文件使用类模板】3.类模板的static与模...
    99+
    2024-04-02
  • C++11模板函数的默认模板参数举例分析
    这篇文章主要介绍“C++11模板函数的默认模板参数举例分析”,在日常操作中,相信很多人在C++11模板函数的默认模板参数举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++11模板函数的默认模板参数举...
    99+
    2023-06-19
  • C++ 函数的类模板和函数模板有何区别?
    c++++ 模板包含类模板和函数模板。类模板允许创建可用于不同数据类型的类,而函数模板可用于不同数据类型的函数。两者主要区别在于:类模板显式实例化,函数模板隐式实例化;类模板中类型参数在...
    99+
    2024-04-12
    类模板 函数模板 c++
  • C++11模板函数与返回类型后置举例分析
    这篇文章主要介绍“C++11模板函数与返回类型后置举例分析”,在日常操作中,相信很多人在C++11模板函数与返回类型后置举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++11模板函数与返回类型后置举...
    99+
    2023-06-19
  • C++ 中模板类和模板函数的应用场景?
    模板类和模板函数在 c++++ 中通过参数化类型提供代码重用性。模板类允许创建通用类,如容器类,适用于各种数据类型。模板函数允许创建处理不同数据类型的函数,如排序算法和数学函数。通过使用...
    99+
    2024-04-24
    模板函数 模板类 c++ 标准库
  • C++ 函数模板的实例化和生成
    函数模板实例化允许在调用时针对不同类型生成特定类型的函数实现。编译器自动执行实例化,但也可以显式生成。函数模板提供了比较不同类型对象的能力,例如比较int和string。 C++ 函数...
    99+
    2024-04-14
    实例化 函数模板 c++
  • C++ 函数模板中的类模板是如何使用的?
    C++ 函数模板中的类模板 C++ 函数模板可以感知类模板,并利用它们作为参数类型。这允许您创建通用函数,适用于各种数据类型和结构。 语法template<typename T&...
    99+
    2024-04-15
    c++ 函数模板 代码可读性
  • C++模板重载的示例分析
    本篇文章为大家展示了C++模板重载的示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.重载模板函数模板可以使得同一个函数对不同类型使用,非常地方便。但有的时候类型不同,只是通过模板是没办法解...
    99+
    2023-06-22
  • C++模板编程的示例分析
    这篇文章主要为大家展示了“C++模板编程的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++模板编程的示例分析”这篇文章吧。模板初阶泛型编程在计算机程序设计领域,为了避免因数据类型的不...
    99+
    2023-06-25
  • C++ 成员函数详解:对象方法的泛型编程与模板化
    c++++ 成员函数是类内部定义的函数,可访问类的数据成员和变量。泛型编程和模板化使代码可重用且独立于数据类型。泛型编程允许编写可用于不同数据类型的代码,而模板化允许创建可用于不同类型成...
    99+
    2024-04-29
    c++ 泛型编程
  • C++函数模板学习示例教程指南
    目录C++函数模板学习指南1. 函数模板的定义2. 函数模板的使用3. 函数模板的特化4. 函数模板的偏特化6. 非类型模板参数7. 函数模板的局限性总结C++函数模板学习指南 C...
    99+
    2023-05-16
    C++函数模板学习 C++函数模板教程
  • java模板模式的示例分析
    这篇文章主要介绍java模板模式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java设计模式-模板模式什么是模板模式?模板模式,顾名思义,就是通过模板拓印的方式。定义模板,就是定义框架、结构、原型。定义一...
    99+
    2023-06-20
  • c++可变参数模板使用示例源码解析
    目录前言认识可变模板参数使用可变模板参数递归法特例化包拓展完美转发总结前言 我们知道,C++模板能力很强大,比起Java泛型这种语法糖来说,简直就是降维打击。而其中,可变参数模板,...
    99+
    2023-01-13
    c++可变参数模板 c++可变参数
  • C++模板index_sequence使用示例详解
    目录引言integer_sequenceindex_sequencemake_index_sequence使用场景index_sequence_for结语引言 integer_se...
    99+
    2022-12-08
    C++模板index_sequence C++ 模板
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作