|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 YJSzhou 于 2022-8-6 16:18 编辑
为什么用函数模板,交换函数中只是简单传字符串交换,输出结果为
交换前:s1=布丁,s2=补丁
交换后:s1=补丁,s2=布丁
- template<class T>
- void swap(T a, T b)
- {
- T temp = a;
- a = b;
- b = temp;
- }
- int main()
- {
- std::string s1 = "布丁";
- std::string s2 = "补丁";
- std::cout << "交换前:s1=" << s1 << ",s2=" << s2 << "\n";
- swap(s1, s2);
- std::cout << "交换后:s1=" << s1 << ",s2=" << s2 << "\n";
- return 0;
- }
复制代码
- #include <iostream>
- #if 0
- template <class T>
- void swap(T &a, T &b) {
- T temp = a;
- a = b;
- b = temp;
- }
- int main() {
- std::string s1 = "布丁";
- std::string s2 = "补丁";
- std::cout << "交换前:s1=" << s1 << ",s2=" << s2 << "\n";
- swap(s1, s2);
- std::cout << "交换后:s1=" << s1 << ",s2=" << s2 << "\n";
- return 0;
- }
- #else
- template <class T>
- void swap(T *a, T *b) {
- T temp = *a;
- *a = *b;
- *b = temp;
- }
- int main() {
- std::string s1 = "布丁";
- std::string s2 = "补丁";
- std::cout << "交换前:s1=" << s1 << ",s2=" << s2 << "\n";
- swap(&s1, &s2);
- std::cout << "交换后:s1=" << s1 << ",s2=" << s2 << "\n";
- return 0;
- }
- #endif
复制代码
|
|