copy-constructor 相关问题

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

如何知道编译器是否会使用复制省略以及我是否需要使用 std::move

在此示例代码中,我如何信任编译器进行非保证复制省略(在返回值优化的情况下): 结构X { X():大小(10000),very_large_buffer(新字符[大小]) { ...

回答 1 投票 0

我无法在 Program.cs 中实例化我的 Student 类

我的控制台应用程序中有一个 Student 类,如下所示: 使用系统; 使用 System.Collections.Generic; 使用 System.Linq; 使用系统文本; 使用 System.Threading.Tasks; 命名空间 ConsoleAp...

回答 1 投票 0

boost::shared_ptr boost::互斥体和复制构造函数

我需要保护对类中数据结构的访问。由于我不能拥有互斥体(因为我无法复制它),我正在考虑拥有shared_ptr 并将互斥体保留在那里。这是我的示例代码

回答 3 投票 0

C++ 中复制构造函数的不确定行为

作为一名学生,我正在测试调用复制构造函数的各种方法。我遇到了其中的 3 个: 测试 t2 = t1 // 1 ; 测试 t3(t1) // 2 ; 测试t4; // 3 ; t4=t1; 明确定义的

回答 1 投票 0

为什么以及何时删除复制构造函数和运算符=

为什么显式“禁用”或删除类的 = 运算符和复制构造函数很有用: SomeClass& 运算符=(SomeClass&) = 删除; SomeClass(SomeClass&) = 删除; 我猜是这个

回答 2 投票 0

C++ 复制构造函数

我有下一个问题: 如果我有一个类包含例如 A类{ 民众: A(); 〜A(); ... 受保护: //数据 std::字符串str; std::向量 我有下一个问题: 如果我有一个类包含例如 Class A { public: A(); ~A(); ... protected: //Data std::string str; std::vector<char> vctChar; std::vector<std::string> vctString; } 我使用默认的 C.Ctor 和赋值。假设我知道声明该对象并将其用于另一个对象作为 C.Ctor,新对象将拥有自己的数据副本(字符串和向量?)还是指向第一个对象的同一个? 我使用默认的 C.Ctor 和 作业。假设我知道声明 该对象并将其用于另一个对象 对象作为 C.Ctor,将新对象 将拥有自己的数据副本(字符串 和向量 如果您的类没有指针,则编译器生成的默认复制构造函数和 operator= 将对您的成员变量进行(有效)深度复制。所以是的,新对象(使用复制构造函数或operator=创建)将拥有自己的数据副本(字符串和向量)。 但是,如果您的类 A 有一个类型为 struct X 的成员,它具有指针字段,那么您需要为该结构 operator= 定义复制构造函数和 X,以便默认的复制构造函数和operator= 对于班级 A 将产生您期望的结果。 它将拥有自己的 string 和 vector 成员副本(尽管在内部,字符串可能仍然引用相同的 char 数组,只要它们都没有更改 - 但这是可以的)。 对于非原始成员,默认的复制构造函数和赋值运算符调用各自的复制构造函数/赋值运算符,这对于标准库类来说效果很好。问题出现在指针上,默认情况下只是复制它们的值,这会导致两个指针引用相同的地址。 每个人都有自己独立的数据副本。 如果您想要副本共享相同的数据,请阅读boost::shared_ptr<>(然后使用std::shared_ptr<>,如果您的编译器附带它)。 是的。合成的复制构造函数调用所有成员的复制构造函数,并且 std::string/std::vector 也具有可以正确复制所有元素的复制构造函数。 对于被指针隐藏的原始数组来说,情况并非如此,这将不会自动执行深层复制。

回答 4 投票 0

为什么不能显式调用构造函数?

我正在考虑创建一个构造函数来初始化封装的 std::array ,并遇到了一个问题,即无法显式调用可复制类型(A 类)的构造函数。那里...

回答 1 投票 0

复制Delphi对象的正确方法

使用构造函数或实例函数复制对象实例有什么优点和缺点? 示例A: 类型 TMyObject = 类 严格的私人 FField:整数; 民众 构造函数

回答 4 投票 0

C++ 显式通用引用构造函数不隐藏复制构造函数?

可能我对显式的理解不够,但我想知道为什么在下面的代码中,当我将通用引用构造函数声明为

回答 2 投票 0

避免在复制构造函数和运算符=

在 C++ 中,当类包含动态分配的数据时,显式定义复制构造函数、operator= 和析构函数通常是合理的。但这些特殊方法的活动是重叠的......

回答 3 投票 0

有没有一种更简洁的方法来使用互斥体定义我的复制向量?

我有一个像这样的 POD 结构 结构体 foo { std::互斥体 m_foo_mutex; 整数a; 整数b; 整数c; //...... }; 它有比这更多的字段,但结构应该很明显。默认复制器...

回答 1 投票 0

使用 memcpy 进行复制构造函数和二维数组的赋值运算符

我有2节课。 指向固定宽度数组的指针和指向用于实现二维浮点数组的指针的指针。 我想了解,是否以及如何将 memcpy 用于我的复制构造函数和

回答 1 投票 0

C++ 中的自构造怎么样:复制和移动构造函数是否应该正确处理带有 `*this` 的调用?

当使用对象本身调用复制/移动构造函数时,C++ 中的最佳实践是什么? 例如: #包括 使用命名空间 std; 结构体Foo{ Foo( const Foo& f...

回答 1 投票 0

是否可以移动引用以避免大量的复制构造函数调用?

假设我们想要反转一个数组,就像这个函数一样。 对于两个元素的每次交换,都会进行复制构造函数、析构函数和两个复制赋值。 模板 无效回复...

回答 1 投票 0

定义复制构造函数时是否总是必须定义复制赋值运算符?

我已经多次在脑海中反复思考,如果提供了复制构造函数,则还必须提供赋值运算符。然而,有时类可以使用复制构造......

回答 1 投票 0

当赋值A=B时,是调用A的赋值运算符还是B的赋值运算符?

如果我有两个类 A 和 B 并且我执行 A=B ,则调用哪个赋值构造函数? A班的还是B班的?

回答 2 投票 0

自动生成默认/复制/移动向量和复制/移动赋值运算符的条件?

我想刷新一下我的记忆,编译器通常会自动生成默认构造函数、复制构造函数和赋值运算符。 我记得有一些规则,但是...

回答 4 投票 0

你能编写一个同时处理复制构造函数和复制赋值运算符的通用函数吗?

由于复制构造函数 MyClass(const MyClass&); 和 = 运算符重载 MyClass& 运算符 = (const MyClass&); 有几乎相同的代码,相同的参数,只有不同......

回答 3 投票 0

在复制构造函数中调用赋值运算符有缺点吗?

这种复制构造函数的实现有一些缺点吗? Foo::Foo(const Foo& i_foo) { *这= i_foo; } 我记得,在一些书中建议从

回答 3 投票 0

使用另一个对象构造一个对象的不同方法

前几天我读到了这篇文章: int 类型的构造函数 但我想我必须先澄清一件事: 假设我有一个类 Myclass 并且我已经创建了一个对象 obj1。 有区别吗

回答 1 投票 0

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