卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章74453本站已运行437

C++ 函数重载和模板的深入理解与应用

函数重载和模板的使用:函数重载:创建同名但参数列表不同的函数,编译器根据参数选择最佳匹配。模板:创建可针对不同数据类型参数化的代码片段,使用模板参数作为类型或值。实战案例:利用模板和重载创建可比较结构体,方便对象排序和比较。

C++ 函数重载和模板的深入理解与应用

C++ 函数重载和模板的深入理解与应用

函数重载

函数重载允许创建同名但参数列表不同的多个函数。当编译器遇到一个函数调用时,它将选择参数列表与实际参数最匹配的重载函数。

立即学习“C++免费学习笔记(深入)”;

void print(int x);
void print(double x);
void print(string x);

int main() {
  print(10);  // 匹配 int 重载
  print(10.5); // 匹配 double 重载
  print("Hello"); // 匹配 string 重载
}

模板

模板是创建可被不同数据类型参数化的代码片段。模板参数可以用作类型或值。

创建模板函数:

template <typename T>
void swap(T& a, T& b) {
  T temp = a;
  a = b;
  b = temp;
}

使用模板函数:

int main() {
  int a = 10, b = 20;
  swap(a, b); // 使用 int 模板参数
  cout << a << " " << b << endl;
}

实战案例:创建可比较结构体

使用模板和重载,我们可以创建可比较结构体,以便轻松地对对象进行排序和比较。

创建可比较结构体:

template <typename T>
struct Comparable {
  T value;

  bool operator<(const Comparable<T>& other) const {
    return value < other.value;
  }
  // ... 其他操作符重载(>、== 等)
};

使用可比较结构体:

struct MyStruct {
  int x;
  double y;
  Comparable<int> c;
};

int main() {
  MyStruct s1{1, 2.5, 10}, s2{2, 3.0, 15};
  if (s1.c < s2.c) {
    cout << "s1.c is less than s2.c" << endl;
  }
}

通过函数重载和模板的结合使用,我们可以创建适应性强且可重复使用的代码,解决各种编程问题。

卓越飞翔博客
上一篇: C++ lambda 表达式的作用域规则是什么?
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏