Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan bersiri dan penyahserikatan kelas templat dan fungsi templat?

Bagaimana untuk melaksanakan bersiri dan penyahserikatan kelas templat dan fungsi templat?

WBOY
WBOYasal
2024-04-24 12:27:02877semak imbas

Pensirian dan penyahserikatan kelas templat dan fungsi templat boleh dicapai dalam pelbagai cara, termasuk menggunakan arkib binari, siri sendiri, penunjuk fungsi dan objek fungsi. Gunakan pengarkiban binari untuk menulis/membaca kelas templat terus ke fail, dan bersiri sendiri untuk menentukan kaedah bersiri/deserialisasi tersuai. Untuk fungsi templat, ia boleh disiri/diserialisasi menggunakan penunjuk fungsi atau objek fungsi.

Bagaimana untuk melaksanakan bersiri dan penyahserikatan kelas templat dan fungsi templat?

Cara melaksanakan siri dan penyahserikatan kelas templat dan fungsi templat

Dalam C++, kelas templat dan fungsi templat digunakan secara meluas dalam pengaturcaraan generik. Keupayaan untuk mensiri dan menyahsiri contoh templat ini adalah penting jika ia perlu dihantar atau diteruskan ke seluruh rangkaian atau storan. Artikel ini memperkenalkan beberapa cara untuk melaksanakan bersiri dan penyahserikatan kelas templat dan fungsi templat.

Sirikan kelas templat

1. Guna Arkib Binari (Arkib Binari)

// 写入归档
std::ofstream ofs("template_class.bin");
boost::archive::binary_oarchive oa(ofs);
oa << my_template_class<int, std::string>;

// 读取归档
std::ifstream ifs("template_class.bin");
boost::archive::binary_iarchive ia(ifs);
std::pair<int, std::string> my_deserialized_class;
ia >> my_deserialized_class;

2 Guna siri sendiri

// 定义一个序列化方法
template <typename T1, typename T2>
void serialize(const my_template_class<T1, T2>& obj, std::ostream& out) {
  out.write((char*)&obj.first, sizeof(T1));
  out.write((char*)&obj.second, sizeof(T2));
}

// 定义一个反序列化方法
template <typename T1, typename T2>
void deserialize(my_template_class<T1, T2>& obj, std::istream& in) {
  in.read((char*)&obj.first, sizeof(T1));
  in.read((char*)&obj.second, sizeof(T2));
}

Sirikan fungsi templat

1 Guna fungsi penunjuk

rreee.

Kes praktikal

Berikut ialah contoh penggunaan siri arkib binari dan penyahsirilan

kelas templat:std::pair

// 定义一个模板函数
template <typename T>
T square(T x) {
  return x * x;
}

// 定义一个序列化方法
void* serialize_function(void* function) {
  return function;
}

// 定义一个反序列化方法
void* deserialize_function(void* function) {
  return function;
}

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan bersiri dan penyahserikatan kelas templat dan fungsi templat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn