C++ 类模板的使用方法和注意事项

马谦马谦马谦
马谦马谦马谦
马谦马谦马谦
606
文章
12
评论
2018年3月7日22:56:32 评论

一、基本用法

类模板是用来生成类的蓝图,声明的方法都和函数模板类似:

和函数模板不同的是,编译器无法为类模板推断参数类型,使用类模板必须手动通过尖括号指定。

声明成员函数:

实现成员函数:

要注意的是实现成员函数的时候域描述符前的应该是CTest<T> 而不是CTest

二、使用类模板的注意事项

使用类模板时成员函数的声明和定义都必须在一个文件中,推荐写在.h 头文件中。

如果把.h.cpp 分开在运行时将会出现错误:

vs 中的错误

g++中的错误

具体为什么只能放在一个文件中的原因至今不知,百度也没有找到一个觉得靠谱的理由,暂且留下这个坑了我一晚上的问题吧。

历史上的今天
三月
7
马谦马谦马谦
  • 本文由 发表于 2018年3月7日22:56:32
  • 转载请务必保留本文链接:https://www.dyxmq.cn/program/code/c-cpp/the-usage-of-cpp-class-template.html
给socket分配随机端口 C/C++

给socket分配随机端口

客户端的socket不需要手动执行bind绑定地址,但这不意味着客户端socket真的不需要绑定端口,实际上是内核它帮我们做了这个操作,在执行connect时,内核发现没有绑定端口,就会自动选择一个合...
vector中emplace_back方法的用途 C/C++

vector中emplace_back方法的用途

在写代码的过程中,CLion提醒我把push_back方法替换成emplace_back方法: 代码中我的想法是使用vector创建一个二维数组,并提前分配好空间,避免后序频繁扩容增加时间复杂度。 e...
宏定义踩坑实战:嵌套调用宏定义 C/C++

宏定义踩坑实战:嵌套调用宏定义

问题背景:在刷题的过程中,要使用min函数,但是线上OJ并没有这个函数。因为一时也想不起它到底属于哪个头文件,所以为了偷懒,顺手就写下了以下宏定义: #define min(x, y) (x) <...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: