【C++】泛型编程 ⑦ ( 模板类常用用法

您所在的位置:网站首页 长靴子配什么衣服穿 【C++】泛型编程 ⑦ ( 模板类常用用法

【C++】泛型编程 ⑦ ( 模板类常用用法

#【C++】泛型编程 ⑦ ( 模板类常用用法 | 来源: 网络整理| 查看: 265

一、类模板基础用法1、类模板声明定义

上一篇博客中 , 【C++】泛型编程 ⑥ ( 类模板 | 类模板语法 | 代码示例 ) 讲解了模板类的基础语法 , 模板类声明如下 :

代码语言:javascript复制// 声明类模板 template class MyClass { public: T value; MyClass(T val) : value(val) {} void printValue() { std::cout Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Test.cpp(6): message : 参见“MyClass”的声明 1>Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Test.cpp(20,18): error C2662: “void MyClass::printValue(void)”: 不能将“this”指针从“MyClass”转换为“MyClass &” 1>Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Test.cpp(20,18): message : 原因如下: 无法从“MyClass”转换为“MyClass” 1>Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Test.cpp(20,5): message : 转换要求第二个用户定义的转换运算符或构造函数 1>Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Test.cpp(10,10): message : 参见“MyClass::printValue”的声明 1>Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Test.cpp(39,15): error C2664: “void fun(MyClass &)”: 无法将参数 1 从“MyClass”转换为“MyClass &” 1>Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Test.cpp(18,6): message : 参见“fun”的声明 1>已完成生成项目“HelloWorld.vcxproj”的操作 - 失败。 ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========二、完整代码示例1、代码示例

下面的示例中是一个 C++ 模板类 MyClass 的定义 ; 这个类可以接受一个类型参数T , 并创建一个具有该类型的成员变量的对象 ;

MyClass是一个模板类 , 该模板类 接受一个 泛型类型参数T , 泛型类型参数 T 在类中的许多地方都会用到 , 在类体中定义了一个 T 类型的成员变量 value , 以及一个接受T类型参数的构造函数 , 在printValue函数中 , 打印 value 的值 ;

template 是模板声明 , 告诉编译器我们将在后面定义一个类模板 , 其中T是一个类型参数 ;

在类模板中 , 所有使用T的地方都可以被任何类型替换 ;

MyClass myInt(10); 中的 是模板参数 , 表示这个类的类型参数是 int ;

myInt(10) 是创建了一个 MyClass 的实例对象 , 并使用 (10) 进行初始化 ;

代码语言:javascript复制#include "iostream" using namespace std; // 声明类模板 template class MyClass { public: T value; MyClass(T val) : value(val) {} void printValue() { std::cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3