返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++11中allocator::construct怎么构造
  • 121
分享到

C++11中allocator::construct怎么构造

2023-06-19 10:06:54 121人浏览 泡泡鱼
摘要

本篇内容介绍了“c++11中allocator::construct怎么构造”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一般来说,C++中

本篇内容介绍了“c++11中allocator::construct怎么构造”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一般来说,C++中根据需要逐个构建对象的情况比较多。例如我们有下面的Tracer(曳光弹)类:

C++11中allocator::construct怎么构造

这个类只是在构造函数,析构函数中输出了表示构造函数和析构函数被执行的字符串。之所以叫曳光弹,是希望通过它确认对象构建和销毁的过程,其作用就像曳光弹一样。

构建,销毁对象的代码如下:

C++11中allocator::construct怎么构造

以下是输出结果,和我们预想的结果一样,构造函数,析构函数各被调用一次。

C++11中allocator::construct怎么构造

如果希望同时创建、销毁多个对象,可以使用如下代码:

C++11中allocator::construct怎么构造

以下输出结果,依然很完美。

C++11中allocator::construct怎么构造

上述两种情况中,new(new[])在分配内存之后会调用构造函数;相对地,delete(delete[])在调用析构函数之后还会释放内存。

placement new

如果需要多个对象,但是事先不知道具体需要多少个,或者不能确定应该如何初始化,事情就比较难办:重复使用new来构建对象当然可以满足上述要求,但是多次从堆中申请内存会影响效率。所以就希望找到一种办法,能够将内存的分配/释放和对象的构造/析构动作分离,从而实现一次分配内存,自由构建对象的目的。

早期的C++中,可以使用placement new来解决这个问题,实例代码如下:

C++11中allocator::construct怎么构造

输出如下:

C++11中allocator::construct怎么构造

构造函数,析构函数都按照我们期待的那样被调用,但是有点小问题:一个是语法比较特殊,另外就是内存管理比较麻烦。

allocator

稍微晚一点的C++在标准库中,增加了allocator模板类,使得同样的事情变得更加简单:

C++11中allocator::construct怎么构造

输出结果完全相同:

C++11中allocator::construct怎么构造

和placement new比较起来,allocator使用了相同的逻辑结构的同时,很好地解决了placement new存在的问题。

“C++11中allocator::construct怎么构造”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: C++11中allocator::construct怎么构造

本文链接: https://lsjlt.com/news/295601.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++11中allocator::construct怎么构造
    本篇内容介绍了“C++11中allocator::construct怎么构造”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一般来说,C++中...
    99+
    2023-06-19
  • C++11怎么移动构造函数通常
    这篇文章主要讲解了“C++11怎么移动构造函数通常”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++11怎么移动构造函数通常”吧!不会抛出异常的移动构造函数拷贝构造函数通常伴随着内存分配操...
    99+
    2023-06-19
  • thinkphp中construct构造函数如何使用
    本篇文章为大家展示了thinkphp中construct构造函数如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。thinkphp中的__construct是不...
    99+
    2024-04-02
  • C++11继承的构造函数怎么使用
    本篇内容主要讲解“C++11继承的构造函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++11继承的构造函数怎么使用”吧!多重继承的情况上述方法在多重继承时仍然有效,除了一种情况:被...
    99+
    2023-06-19
  • C++11中 constexpr构造函数的作用是什么
    这期内容当中小编将会给大家带来有关C++11中 constexpr构造函数的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。聚合类聚合类(aggregate class)允许利用者直接访问其成员,...
    99+
    2023-06-19
  • C++11中委托构造函数如何使用
    这篇文章将为大家详细讲解有关C++11中委托构造函数如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++11之前的状况构造函数多了以后,几乎必然地会出现代码重复的情况,为了避免这种情...
    99+
    2023-06-19
  • C++11中移动构造函数案例代码
    目录1. 拷贝构造函数中的深拷贝问题2. C++移动构造函数(移动语义的具体实现)1. 拷贝构造函数中的深拷贝问题 在 C++ 98/03 标准中,如果想用其它对象初始化一个同类的新...
    99+
    2023-01-04
    C++11移动构造函数 C++11构造函数 C++构造函数
  • C#中怎么构造函数
    本篇内容介绍了“C#中怎么构造函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#构造函数大体上分为静态C#构造函数和实例C#构造函数,实...
    99+
    2023-06-18
  • C++11移动构造函数的使用
    目录一、引言二、左值和右值三、深拷贝构造函数四、右值引用五、移动构造函数六、std::move()七、参考资料一、引言 移动构造函数是什么?先举个例子,你有一本书,你不想看,但我很想...
    99+
    2024-04-02
  • C++11继承的构造函数举例分析
    本篇内容主要讲解“C++11继承的构造函数举例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++11继承的构造函数举例分析”吧!假设我们有下面的CRect类:由于今天的内容是讲构造函数的,...
    99+
    2023-06-19
  • C#中的构造函数怎么用
    这篇文章主要介绍了C#中的构造函数怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中的构造函数怎么用文章都会有所收获,下面我们一起来看看吧。C# 中的构造函数类的 构造函数 是类的一...
    99+
    2023-06-17
  • C++中怎么静态构造函数
    C++中怎么静态构造函数,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。函数是C++ 语言程序的主要组成部分,一个函数可以调用其他函数。在设计良好的程序中,每个函数都有特定的...
    99+
    2023-06-17
  • C#中怎么复制构造函数
    这期内容当中小编将会给大家带来有关C#中怎么复制构造函数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。我们在讨论C#复制构造函数之前想要明白什么是复制构造函数?我们知道构造函数是用来初始化我们要创建实例的...
    99+
    2023-06-18
  • C#中怎么调用构造函数
    这篇文章给大家介绍C#中怎么调用构造函数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#调用构造函数是如何的呢?让我们首先来看看什么是构造函数?C#调用构造函数之构造函数定义:它是在创建给定类型的对象时执行的类方法。...
    99+
    2023-06-17
  • C#中怎么继承构造函数
    这篇文章给大家介绍C#中怎么继承构造函数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#继承构造函数的示例:using System;    namespace&nb...
    99+
    2023-06-17
  • C#中怎么使用构造函数
    本篇文章给大家分享的是有关C#中怎么使用构造函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#构造函数的名字不能随便起,必须让编译器认得出才可以被自动执行。它的命名方法既简...
    99+
    2023-06-17
  • 构造函数construct和ThinkPHP中initialize不同的示例分析
    这篇文章给大家分享的是有关构造函数construct和ThinkPHP中initialize不同的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。ThinkPHP中init...
    99+
    2024-04-02
  • C++构造函数怎么用
    这篇文章给大家分享的是有关C++构造函数怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.作用一种特殊类型的方法,在每次实例化对象时运行2.代码举例2.1 示例1:#include <ios...
    99+
    2023-06-25
  • C#中怎么构造一个POP3服务器
    C#中怎么构造一个POP3服务器,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#构造POP3服务器下面我们要用VS.NET 2003和C#开发一个“伪”POP3服务器——之所...
    99+
    2023-06-17
  • C++中怎么定义一个构造函数
    C++中怎么定义一个构造函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C++构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作