C++ ---类模板和函数模板

1.类模版

示例:

#include <iostream>

namespace ClassTempalteTest {
//类模板
template <class T> class Person {
public:
  Person(T id, T age) {
    this->mAge_ = age;
    this->mId_ = id;
  }

  void showPerson() {
    std::cout << "id:" << mId_ << ",age:" << mAge_ << std::endl;
  }

public:
  T mId_;
  T mAge_;
};

//函数模板在调用时,可以自动进行类型推导
//类模板必须显式声明
void testShow() {
  Person<int> person(12, 11111);
  person.showPerson();
}

} // namespace ClassTempalteTest


int main() {
  ClassTempalteTest::testShow();
  return 0;
}

说明:
函数模板在调用时,可以自动进行类型推导
类模板必须显式声明

2.函数模板

示例:
实现对int和char类型数组进行排序

#include <iostream>
//函数模板实例
//对int和char类型数组进行排序
namespace FunctionTemplateTest {
template <class T> void printArray(T *arr, int len) {
  for (int i = 0; i < len; i++) {
    std::cout << "arr[" << i << "] = " << arr[i] << std::endl;
  }
}
template <class T> void sortArray(T *arr, int len) {
  for (int i = 0; i < len; i++) {
    for (int j = i + 1; j < len; j++) {
      if (arr[i] > arr[j]) {
        T temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
      }
    }
  }
}

void arrayTest() {
  int array[] = {1, 4, 9, 2, 7, 5};
  int len = sizeof(array) / sizeof(int);
  std::cout << "------------int array test--------" << std::endl;
  printArray(array, len);
  std::cout << "------------after sort--------" << std::endl;
  sortArray(array, len);
  printArray(array, len);
  std::cout << "------------char array test--------" << std::endl;
  char chArr[] = {'a', 'f', 'w', 'd', 'o'};
  int len_chArr = sizeof(chArr) / sizeof(char);
  printArray(chArr, len_chArr);
  std::cout << "------------after sort--------" << std::endl;
  sortArray(chArr, len_chArr);
  printArray(chArr, len_chArr);
}

} // namespace FunctionTemplateTest

int main() {
  FunctionTemplateTest::arrayTest();
  return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值