您的位置:首页 > 汽车 > 时评 > 网站域名空间怎么买_图案设计网站有哪些_淘宝店铺推广方法_系统优化是什么意思

网站域名空间怎么买_图案设计网站有哪些_淘宝店铺推广方法_系统优化是什么意思

2024/10/19 18:22:21 来源:https://blog.csdn.net/u011743621/article/details/143080136  浏览:    关键词:网站域名空间怎么买_图案设计网站有哪些_淘宝店铺推广方法_系统优化是什么意思
网站域名空间怎么买_图案设计网站有哪些_淘宝店铺推广方法_系统优化是什么意思

测试代码

#include <iostream>
#include <map>
#include <memory>class Socket_RowData
{public:Socket_RowData()  { pin_num = 0;}~Socket_RowData() {/* std::cout<<"Socket_RowData::~Socket_RowData()"<<std::endl*/;}public:void Clear(){pin_num = 0;m_pin_status.clear();}public:int pin_num;std::map<int,int> m_pin_status;
};class Socket_Data
{
public:Socket_Data()  { socketrow_num = 0; }~Socket_Data() { /*std::cout<<"Socket_Data::~Socket_Data()"<<std::endl*/; }public:void Clear(){socketrow_num = 0;m_socket_row.clear();}public://每个插座的排数int     socketrow_num;std::map<int, Socket_RowData>  m_socket_row;
};class Board_IOData
{
public:Board_IOData()  { socket_num = 0; std::cout<<"Board_IOData::Board_IOData()"<<std::endl;}Board_IOData(const Board_IOData& data)  { socket_num = 0; std::cout<<"Board_IOData::Board_IOData() copy construct"<<std::endl;}Board_IOData& operator=(const Board_IOData& data)  { socket_num = 0; std::cout<<"Board_IOData::Board_IOData() assign construct"<<std::endl; return *this;}~Board_IOData() { std::cout<<"Board_IOData::~Board_IOData()"<<std::endl;  }public:void Clear(){socket_num = 0;m_socket_map.clear();}public://插座总数int socket_num;std::map<int,Socket_Data> m_socket_map;
};void Test1()
{std::cout<<"Test1() begin"<<std::endl;{//没有使用智能指针情形std::cout<<"debug 1"<<std::endl;Board_IOData board_iodata1;std::map<int,Board_IOData> map1;map1.insert(std::make_pair(1,board_iodata1));std::cout<<"debug 2"<<std::endl;map1.clear();std::cout<<"debug 3"<<std::endl;}std::cout<<"debug ============="<<std::endl;;{//使用智能指针情形std::cout<<"debug 4"<<std::endl;std::shared_ptr<Board_IOData> board_iodata2(new Board_IOData);std::map<int,std::shared_ptr<Board_IOData> > map2;map2.insert(std::make_pair(1,board_iodata2));std::cout<<"debug 5"<<std::endl;map2.clear();std::cout<<"debug 6"<<std::endl;}std::cout<<"Test1() end"<<std::endl;
}int main()
{Test1();return 0;
}
[banting@localhost test]$ g++ -g -std=c++11 -g test.cpp -o test
[banting@localhost test]$ ./test
Test1() begin
debug 1
Board_IOData::Board_IOData()
Board_IOData::Board_IOData() copy construct
Board_IOData::Board_IOData() copy construct
Board_IOData::~Board_IOData()
debug 2
Board_IOData::~Board_IOData()
debug 3
Board_IOData::~Board_IOData()
debug =============
debug 4
Board_IOData::Board_IOData()
debug 5
debug 6
Board_IOData::~Board_IOData()
Test1() end
[banting@localhost test]$

测试结果

没使用智能指针比使用智能指针在插入map时多了两次复制构造函数调用,增加数据拷贝的开销

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com