C++模板类中如何为模板类型的参数设置默认实参
C++模板类构造函数默认参数实现类型默认初始化方案
核心实现方法
你只需要将构造函数的默认参数填写为V()即可,这是C++的值初始化语法,完全符合你的需求:
- 对于
std::string等自定义类类型,会调用其默认构造函数,生成空串实例 - 对于
double、int等基础标量类型,会执行零初始化,生成0.0、0等对应类型的零值
修改后代码示例
template <class V, class K> class Pair { public: Pair(const K& key, const V& value = V()) { // 原有构造逻辑保持不变 } };
补充说明
- 如果你的项目使用C++11及以上标准,也可以用列表初始化写法
V{},效果完全一致 - 注意你给出的测试用例中模板参数顺序与类定义不匹配:类定义的模板参数顺序是
<V, K>,而测试用例中Pair<int, std::string> p1(21)传入的key是int类型,和第二个模板参数std::string冲突,建议调整类的模板参数顺序为template <class K, class V>更符合常规使用习惯。
内容的提问来源于stack exchange,提问作者roniabusayeed
相关产品推荐
相关产品推荐

