copy-constructor 相关问题

复制构造函数是一个构造函数,它创建一个新对象,它是现有对象的克隆。该术语主要用于C ++编程语言,其中复制构造函数具有特殊状态。

如何在 C++17 中禁用过于通用的转发构造函数并推迟到复制构造函数

如果我有使用 c++20 概念编写的简单类 #包括 #包括 模板 结构 MyVec { std::array m_vec;

回答 2 投票 0

C++ 无序映射在添加我的自定义哈希函数时需要复制构造函数

我正在尝试为 A 类使用自定义哈希结构,它是 std::unordered_map 中的键类型,它是 B 类中的 std::variant 替代方案之一。 这是我的代码的简化版本,其中...

回答 1 投票 0

c++ 编译器可以在用户定义的和编译器生成的复制构造函数之间自由选择?

我有以下示例代码(我程序的精简版) 类“some_class”有一个带有默认参数的构造函数。编译器能够将此构造函数识别为副本

回答 1 投票 0

在站点构造函数主体外分配类变量[重复]

我是 c++ 的新手,正在学习教程(将在下面链接)并且遇到了此类构造函数: 玩家类:公共实体 { 私人的: std::string m_Name; 民众: 播放器(

回答 1 投票 0

用 C++ 编写二维地图的三法则

我正在制作一个程序来确定一条推文是快乐还是悲伤,我想我对推文进行标记,然后创建一个映射,将这个词存储为键,总共使用了多少次,a。 ..

回答 2 投票 0

不能使用 std::map::emplace 插入没有复制构造函数的类的对象

我正在尝试编译以下代码: #包括 #包括 我的班级 { 民众: 我的类():m_cv(){} std::condition_variable m_cv; //只是为了说明...

回答 1 投票 0

可以分配或复制具有 const 成员的类

根据 abseil.io/tips/177,它说 具体来说,如果您的班级有 const 成员,则无法将其分配给(无论是通过复制分配还是移动分配)。语言理解这一点:如果...

回答 0 投票 0

为什么将捕获的 lambda 分配给 std::function 会导致更多副本[重复]

在下面的代码中,分配给 std 函数比分配给自动变量导致更多的复制构造函数调用。 (实际上是初始化,而不是分配;)) 我得到了一个捕获的值

回答 0 投票 0

将使用 packaged_task 的 lambda 任务放入队列中

所以我有一个线程池的入队实现 模板 自动排队(F&& f, Args&&... args) -> std::future 所以我有一个线程池的入队实现 template <typename F, typename... Args> auto enqueue(F&& f, Args&&... args) -> std::future<decltype(f(args...))> { using return_type = decltype(f(args...)); auto task = std::make_shared<std::packaged_task<return_type()>>( std::bind(std::forward<F>(f), std::forward<Args>(args)...) ); auto result = task->get_future(); { std::unique_lock<std::mutex> lock(m_queue_mutex); if (m_stop) throw std::runtime_error("enqueue on stopped ThreadPool"); m_tasks.emplace([task]() { (*task)(); }); } m_condition.notify_one(); return result; } 到目前为止一切顺利,但我想避免使用内存分配而不使用 make_shared。 所以我改成这样: template <typename F, typename... Args> auto enqueue(F&& f, Args&&... args) -> std::future<decltype(f(args...))> { using return_type = decltype(f(args...)); auto task = std::packaged_task<return_type()>( std::bind(std::forward<F>(f), std::forward<Args>(args)...) ); auto result = task.get_future(); { std::unique_lock<std::mutex> lock(m_queue_mutex); if (m_stop) throw std::runtime_error("enqueue on stopped ThreadPool"); m_tasks.emplace([task = std::move(task)]() mutable { task(); }); } m_condition.notify_one(); return result; } 据我所知,这里没有copy。 任务应该移到 lambda 中,lambda 应该移到队列中,但我仍然收到此错误 使用删除函数‘std::packaged_task<_Res(_ArgTypes ...)>::packaged_task(const std::packaged_task<_Res(_ArgTypes ...)>&) [with _Res = void; _ArgTypes = {}]' 38 | m_tasks.emplace(任务可变{任务();}); 我的理解是我正在尝试复制 packaged_task 并且它的复制构造函数被删除了。 在这里你可以玩完整的代码 https://godbolt.org/z/bEsPfabz6 谢谢!

回答 0 投票 0

在C++ copy-swap成语中如何设置const成员?

一个简单的复制交换设置。constmem有一个名为x的const成员,当使用复制-赋值操作符时,看起来x将未被初始化,但不知为何却被复制了......。

回答 1 投票 0

怎么会出现调用了destructor,但之前没有constuctor呢?

我目前正在学习c++的面向对象特性。我写了一段代码来测试继承和多态是如何工作的。下面是部分代码: class Person { public: ...

回答 2 投票 0

派遣操作员问题

大家好,我研究复制构造函数有一段时间了,在一个网站上遇到了这句话。当bitwise(赋值运算符)赋值时,对象...。

回答 1 投票 0

标准函数的lambda捕获

下面的代码会导致分段故障,但我不明白为什么。#include #include #include class State {public:int x; int y; State(int _x, ...

回答 1 投票 0

如何在Bullet Physics中深度复制一个btTriangleMesh?

我使用Bullet Physics,我需要复制一个btTriangleMesh类型的实例。/ 变量是一个类成员btTriangleMesh triangles; 我的目的是将一个体的碰撞形状改变为一个新的 ...

回答 1 投票 1

C++赋值运算符,可以用copy代替吗?

当我在阅读。赋值操作符和复制构造函数的区别是什么?赋值运算符和复制构造函数的区别是什么?下面的...

回答 1 投票 0

复制构造函数在向堆栈中插入元素时出现的故障

我的.h文件中给了我一个Node和Stack类。我必须实现复制构造函数、赋值操作符和析构器,并在不同的测试文件中测试它们。当测试复制 ...

回答 1 投票 0

如何获得一个不可变对象的修改副本?

如何获得一个不可变对象的修改副本?即some_magical_method在这个snipped中怎么会是这样的呢? import attr @attr.s(frozen=True, slots=True) class Config: param1: int = attr...。

回答 2 投票 0

在 "dctor、copy ctor和copy assignment operator "中,为什么删除其中一个而让另一个隐式定义,很可能会导致错误

按照文档(https:/en.cppreference.comwcpplanguagerule_of_three)中的说法。通过可复制句柄管理不可复制资源的类可能需要声明复制......。

回答 1 投票 0

为什么StringCopyFromLiteral比StringCopyFromString快?

快速C++基准的例子: static void StringCreation(benchmark::State& state) { / 这个循环里面的代码会被反复测量 for (auto _ : state) { std::string created_string("..."。

回答 1 投票 0

为什么StringCopyFromLiteral比StringCopyFromString快?

快速C++基准的例子: static void StringCreation(benchmark::State& state) { / 这个循环里面的代码会被反复测量 for (auto _ : state) { std::string created_string("..."。

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.