亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++ Boost Serialization庫超詳細獎金額

 更新時間:2022年12月02日 08:43:23   作者:無水先生  
Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱

一、說明

Boost.Serialization 也可以序列化指針和引用。因為指針存儲對象的地址,所以序列化地址沒有多大意義。當序列化指針和引用時,被引用的對象被序列化。

二、示例代碼

示例 64.8。序列化指針

#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <iostream>
#include <sstream>
std::stringstream ss;
class animal
{
public:
  animal() = default;
  animal(int legs) : legs_{legs} {}
  int legs() const { return legs_; }
private:
  friend class boost::serialization::access;
  template <typename Archive>
  void serialize(Archive &ar, const unsigned int version) { ar & legs_; }
  int legs_;
};
void save()
{
  boost::archive::text_oarchive oa{ss};
  animal *a = new animal{4};
  oa << a;
  std::cout << std::hex << a << '\n';
  delete a;
}
void load()
{
  boost::archive::text_iarchive ia{ss};
  animal *a;
  ia >> a;
  std::cout << std::hex << a << '\n';
  std::cout << std::dec << a->legs() << '\n';
  delete a;
}
int main()
{
  save();
  load();
}

Example 64.8

示例 64.8 使用 new 創(chuàng)建一個類型為 animal 的新對象,并將其分配給指針 a。指針——不是*a——然后被序列化。 Boost.Serialization 自動序列化 a 引用的對象而不是對象的地址。

如果存檔已恢復,則 a 不一定包含相同的地址。創(chuàng)建一個新對象并將其地址分配給 a。 Boost.Serialization 只保證對象與序列化的對象相同,而不保證其地址相同。

因為智能指針與動態(tài)分配的內存結合使用,所以 Boost.Serialization 也提供了對它們的支持。

示例 64.9。序列化智能指針

#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/scoped_ptr.hpp>
#include <boost/scoped_ptr.hpp>
#include <iostream>
#include <sstream>
using namespace boost::archive;
std::stringstream ss;
class animal
{
public:
  animal() = default;
  animal(int legs) : legs_{legs} {}
  int legs() const { return legs_; }
private:
  friend class boost::serialization::access;
  template <typename Archive>
  void serialize(Archive &ar, const unsigned int version) { ar & legs_; }
 
  int legs_;
};
void save()
{
  text_oarchive oa{ss};
  boost::scoped_ptr<animal> a{new animal{4}};
  oa << a;
}
void load()
{
  text_iarchive ia{ss};
  boost::scoped_ptr<animal> a;
  ia >> a;
  std::cout << a->legs() << '\n';
}
int main()
{
  save();
  load();
}

Example 64.9

示例 64.9 使用智能指針 boost::scoped_ptr 來管理動態(tài)分配的動物類型對象。包含頭文件 boost/serialization/scoped_ptr.hpp 以序列化此類指針。要序列化 ??boost::shared_ptr 類型的智能指針,請使用頭文件 boost/serialization/shared_ptr.hpp。

請注意,Boost.Serialization 尚未針對 C++11 進行更新。 Boost.Serialization 當前不支持來自 C++11 標準庫的智能指針,如 std::shared_ptr 和 std::unique_ptr。

示例 64.10。序列化引用

#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <iostream>
#include <sstream>
using namespace boost::archive;
std::stringstream ss;
class animal
{
public:
  animal() = default;
  animal(int legs) : legs_{legs} {}
  int legs() const { return legs_; }
private:
  friend class boost::serialization::access;
  template <typename Archive>
  void serialize(Archive &ar, const unsigned int version) { ar & legs_; }
  int legs_;
};
void save()
{
  text_oarchive oa{ss};
  animal a{4};
  animal &r = a;
  oa << r;
}
void load()
{
  text_iarchive ia{ss};
  animal a;
  animal &r = a;
  ia >> r;
  std::cout << r.legs() << '\n';
}
int main()
{
  save();
  load();
}

Boost.Serialization 也可以毫無問題地序列化引用(參見示例 64.10)。與指針一樣,引用的對象會自動序列化。

到此這篇關于C++ Boost Serialization庫超詳細獎金額的文章就介紹到這了,更多相關C++ Serialization內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++實踐IP地址類項目參考

    C++實踐IP地址類項目參考

    今天小編就為大家分享一篇關于C++實踐IP地址類項目參考,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Qt數(shù)據(jù)庫應用之通用數(shù)據(jù)庫同步

    Qt數(shù)據(jù)庫應用之通用數(shù)據(jù)庫同步

    數(shù)據(jù)庫同步的主要功能是將本地的數(shù)據(jù)庫記錄同步到遠程的數(shù)據(jù)庫。本文將利用Qt實現(xiàn)通用數(shù)據(jù)庫同步功能,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-03-03
  • C++實現(xiàn)LeetCode(34.在有序數(shù)組中查找元素的第一個和最后一個位置)

    C++實現(xiàn)LeetCode(34.在有序數(shù)組中查找元素的第一個和最后一個位置)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(34.在有序數(shù)組中查找元素的第一個和最后一個位置),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • C語言Turbo C下實現(xiàn)俄羅斯方塊

    C語言Turbo C下實現(xiàn)俄羅斯方塊

    這篇文章主要為大家詳細介紹了C語言Turbo C下寫的俄羅斯方塊,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 統(tǒng)計C語言二叉樹中葉子結點個數(shù)

    統(tǒng)計C語言二叉樹中葉子結點個數(shù)

    這篇文章主要介紹的是統(tǒng)計C語言二叉樹中葉子結點個數(shù),文章以C語言二叉樹中葉子結點為基礎分享一個簡單小栗子講解,具有一定的知識參考價值,需要的小伙伴可以參考一下
    2022-02-02
  • VS2022連接sqlserver數(shù)據(jù)庫教程

    VS2022連接sqlserver數(shù)據(jù)庫教程

    本文主要介紹了VS2022連接sqlserver數(shù)據(jù)庫教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 淺談C語言編程中的布爾bool數(shù)據(jù)類型

    淺談C語言編程中的布爾bool數(shù)據(jù)類型

    這篇文章主要介紹了C語言編程中的布爾bool數(shù)據(jù)類型,bool并不是需要通過C++才能使用的,需要的朋友可以參考下
    2015-11-11
  • C語言實現(xiàn)簡單的定時器

    C語言實現(xiàn)簡單的定時器

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單的定時器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • C/C++中CONST用法總結(推薦)

    C/C++中CONST用法總結(推薦)

    這篇文章主要介紹了C/C++中CONST用法總結(推薦),包括const常量與define宏定義的區(qū)別介紹,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-07-07
  • 深入理解C++中的new/delete和malloc/free動態(tài)內存管理及區(qū)別介紹

    深入理解C++中的new/delete和malloc/free動態(tài)內存管理及區(qū)別介紹

    這篇文章主要介紹了深入理解C++中的new/delete和malloc/free動態(tài)內存管理,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09

最新評論