最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、說明

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

二、示例代碼

示例 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 引用的對象而不是對象的地址。

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

因為智能指針與動態(tài)分配的內(nèi)存結(jié)合使用,所以 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 當(dāng)前不支持來自 C++11 標(biāo)準(zhǔn)庫的智能指針,如 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)。與指針一樣,引用的對象會自動序列化。

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

相關(guān)文章

  • 利用c++寫一個簡單的推箱子小游戲

    利用c++寫一個簡單的推箱子小游戲

    推箱子想必是很多人童年時期的經(jīng)典游戲,我們依舊能記得抱個老人機娛樂的場景,下面這篇文章主要給大家介紹了關(guān)于如何利用c++寫一個簡單的推箱子小游戲的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • C語言全面講解順序表使用操作

    C語言全面講解順序表使用操作

    線性表是最簡單的數(shù)據(jù)結(jié)構(gòu),而順序表又是最簡單的線性表,其基本思想是用一段地址連續(xù)的儲存單元依次存儲線性表的數(shù)據(jù)元素,比如我們常用的一維數(shù)組,下面代碼實現(xiàn)了順序表的定義以及基本操作
    2022-04-04
  • 基于C語言實現(xiàn)簡單五子棋游戲

    基于C語言實現(xiàn)簡單五子棋游戲

    這篇文章主要為大家詳細介紹了基于C語言實現(xiàn)簡單五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語言實現(xiàn)單鏈表反轉(zhuǎn)

    C語言實現(xiàn)單鏈表反轉(zhuǎn)

    這篇文章主要介紹了C語言實現(xiàn)單鏈表反轉(zhuǎn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • c語言中十六進制轉(zhuǎn)二進制顯示的實現(xiàn)方法

    c語言中十六進制轉(zhuǎn)二進制顯示的實現(xiàn)方法

    本篇文章對c語言中十六進制轉(zhuǎn)二進制顯示的實現(xiàn)方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 詳解C語言編程中的函數(shù)指針以及函數(shù)回調(diào)

    詳解C語言編程中的函數(shù)指針以及函數(shù)回調(diào)

    這篇文章主要介紹了C語言編程中的函數(shù)指針以及函數(shù)回調(diào),函數(shù)回調(diào)實際上就是讓函數(shù)指針作函數(shù)參數(shù)、調(diào)用時傳入函數(shù)地址,需要的朋友可以參考下
    2016-04-04
  • C語言實現(xiàn)最簡單的剪刀石頭布小游戲示例

    C語言實現(xiàn)最簡單的剪刀石頭布小游戲示例

    這篇文章主要介紹了C語言實現(xiàn)最簡單的剪刀石頭布小游戲,涉及C語言數(shù)組、隨機數(shù)與數(shù)值運算等相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • 詳解C語言的結(jié)構(gòu)體中成員變量偏移問題

    詳解C語言的結(jié)構(gòu)體中成員變量偏移問題

    這篇文章主要介紹了C語言的結(jié)構(gòu)體中成員變量偏移問題,以講解如何編寫宏來對成員變量進行修改為主,需要的朋友可以參考下
    2016-04-04
  • C語言實現(xiàn)哈夫曼編碼

    C語言實現(xiàn)哈夫曼編碼

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)哈夫曼編碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 一文帶你簡單了解c++正則表達式

    一文帶你簡單了解c++正則表達式

    正則表達式在匹配字符串,驗證輸入合法性時經(jīng)常用到.C++?11標(biāo)準(zhǔn)庫中已經(jīng)支持了正則表達式,下面這篇文章主要給大家介紹了關(guān)于c++正則表達式的相關(guān)資料,需要的朋友可以參考下
    2023-04-04

最新評論

米泉市| 成武县| 霍林郭勒市| 宝山区| 运城市| 寿光市| 潞西市| 阜城县| 陈巴尔虎旗| 临武县| 华宁县| 临西县| 桂东县| 大渡口区| 广宗县| 莆田市| 德州市| 韶关市| 祁阳县| 思南县| 托里县| 峨山| 浦县| 浙江省| 黄骅市| 清镇市| 余江县| 凤城市| 安龙县| 东阳市| 皮山县| 福州市| 遵义县| 鹤岗市| 陆丰市| 乌兰县| 绥中县| 黄冈市| 八宿县| 陵水| 彩票|