字符串作为函数模版实参的特殊情况
来源:互联网 发布:淘宝聚划算是正品吗 编辑:程序博客网 时间:2024/06/09 00:29
#include "stdafx.h"
#include<iostream>
using namespace std;
/*
*匹配测试
*/
template<typename T>
int ref_fun(T & t1, T & t2)
{
return strlen(t1) - strlen(t2);
}
template<typename T>
int nonref_fun(T t1, T t2)
{
return strlen(t1) - strlen(t2);
}
/*
*类型测试
*/
template<typename T>
void Ref(T & t)
{
cout << t << "ref:" << typeid(t).name() << endl;
}
template<typename T>
void nonRef(T t)
{
cout << t << "ref:" << typeid(t).name() << endl;
}
int main()
{
//int a = ref_fun("abcd","abc");
//Error:没有与参数列表匹配的模版实例
//参数类型为(const char[5],const char[4])
int a = ref_fun("abcd","efgh");
//编译通过 为(const char[5],const char[5])
int b = nonref_fun("abcd", "abc");
//编译通过 为char *
/*
解释:对于引用类型的字符串参数编译器会自动转换成“字符常量数组”例如const char[N],所以如果N值不同则两个字符串所对应的类型就不同,因此不能实例化同一个模版参数。而对于非引用
类型的字符串参数,编译器会自动将字符数组转换为字符指针类型,所以不同长度的字符串都会转换为相同额
字符指针类型,因此可以实例化同一个模版参数。
下面的代码是对于此结论的验证代码:
*/
//输出引用字符串的类型
Ref("abc");
//输出非引用字符串的类型
nonRef("abc");
}
#include<iostream>
using namespace std;
/*
*匹配测试
*/
template<typename T>
int ref_fun(T & t1, T & t2)
{
return strlen(t1) - strlen(t2);
}
template<typename T>
int nonref_fun(T t1, T t2)
{
return strlen(t1) - strlen(t2);
}
/*
*类型测试
*/
template<typename T>
void Ref(T & t)
{
cout << t << "ref:" << typeid(t).name() << endl;
}
template<typename T>
void nonRef(T t)
{
cout << t << "ref:" << typeid(t).name() << endl;
}
int main()
{
//int a = ref_fun("abcd","abc");
//Error:没有与参数列表匹配的模版实例
//参数类型为(const char[5],const char[4])
int a = ref_fun("abcd","efgh");
//编译通过 为(const char[5],const char[5])
int b = nonref_fun("abcd", "abc");
//编译通过 为char *
/*
解释:对于引用类型的字符串参数编译器会自动转换成“字符常量数组”例如const char[N],所以如果N值不同则两个字符串所对应的类型就不同,因此不能实例化同一个模版参数。而对于非引用
类型的字符串参数,编译器会自动将字符数组转换为字符指针类型,所以不同长度的字符串都会转换为相同额
字符指针类型,因此可以实例化同一个模版参数。
下面的代码是对于此结论的验证代码:
*/
//输出引用字符串的类型
Ref("abc");
//输出非引用字符串的类型
nonRef("abc");
}
0 0
- 字符串作为函数模版实参的特殊情况
- 字符串作为函数模版实参的意外情况
- 使用字符串作为函数模板的实参
- 用字符串作为函数模版的实参
- C++ template -- 字符串作为函数模板实参
- 一个函数作为另一个函数的实参
- 【读书笔记】以函数作为算法的实参
- 流作为函数实参
- 数组作为函数实参
- string 作为函数实参
- C++基础——使用字符串作为函数模板的实参
- 类模版中使用模版函数,用于对特殊情况进行处理;(基于模板的使用时才物例化)
- 函数调用可以作为一个函数的实参
- 比较两个字符串的大小(两种方法,重点在介绍数组元素可以作为函数的实参)
- 数组作为实参传给函数的形参指针
- JS中全局变量作为函数实参传入的问题
- 关于模版的实参推演
- 以指针作为函数参数,不能改变实参指针变量的值从而改变实参值
- Maximal Rectangle
- Android Studio 2.3后,找不到Launch Standalone SDK Manager
- Window下用eclipse开发c
- 话说有关precision 5520(大电池版无机械硬盘,仅一个nvme硬盘)上作ubuntu系统的教程step by step
- 使用CSDN-markdown编辑器
- 字符串作为函数模版实参的特殊情况
- 由于外键约束无法删除数据
- 笔试面试题汇总---4月
- c++转C#
- BZOJ2818:Gcd(莫比乌斯函数 & 欧拉函数)
- Android 传参需要List/Array,用json转换一下
- javascript高级程序设计读书笔记-第二章
- LIS 百练2757 LCS UVA10405
- 2017年蘑菇街暑期算法实习生一面+二面