我知道编写模板函数只是以一般方式编写内容,并且编译器应该根据程序的其余部分编写函数的实际实例.但请考虑以下计划:
#inlcude <time.h>
#include <stdlib.h>
#include <string>
template <typename T> void ptr_swap(T * a, T * b)
{
T * temp = a;
a = b;
b = temp;
}
int main()
{
srand(time(NULL));
std::string s1("Obama"), s2("Hillary");
int i1(1), i2(69);
if (rand() & 1 == 1) ptr_swap(&s1, &s2);
else ptr_swap(&i1, &i2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译器如何知道是否为strings或ints 构造ptr_swap函数?它只是确保"为任何事情做好准备",从而编写2个功能
void ptr_swap(std::string * a, std::string * b)
{
std::string * temp = a;
a = b;
b = temp;
}
void ptr_swap (int * a, int * b)
{
int * temp = a;
a = b;
b = temp;
}
Run Code Online (Sandbox Code Playgroud)
????
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |