复制构造函数是一个构造函数,它创建一个新对象,它是现有对象的克隆。该术语主要用于C ++编程语言,其中复制构造函数具有特殊状态。
如何知道编译器是否会使用复制省略以及我是否需要使用 std::move
在此示例代码中,我如何信任编译器进行非保证复制省略(在返回值优化的情况下): 结构X { X():大小(10000),very_large_buffer(新字符[大小]) { ...
我无法在 Program.cs 中实例化我的 Student 类
我的控制台应用程序中有一个 Student 类,如下所示: 使用系统; 使用 System.Collections.Generic; 使用 System.Linq; 使用系统文本; 使用 System.Threading.Tasks; 命名空间 ConsoleAp...
boost::shared_ptr boost::互斥体和复制构造函数
我需要保护对类中数据结构的访问。由于我不能拥有互斥体(因为我无法复制它),我正在考虑拥有shared_ptr 并将互斥体保留在那里。这是我的示例代码
作为一名学生,我正在测试调用复制构造函数的各种方法。我遇到了其中的 3 个: 测试 t2 = t1 // 1 ; 测试 t3(t1) // 2 ; 测试t4; // 3 ; t4=t1; 明确定义的
为什么显式“禁用”或删除类的 = 运算符和复制构造函数很有用: SomeClass& 运算符=(SomeClass&) = 删除; SomeClass(SomeClass&) = 删除; 我猜是这个
我有下一个问题: 如果我有一个类包含例如 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 也具有可以正确复制所有元素的复制构造函数。 对于被指针隐藏的原始数组来说,情况并非如此,这将不会自动执行深层复制。
我正在考虑创建一个构造函数来初始化封装的 std::array ,并遇到了一个问题,即无法显式调用可复制类型(A 类)的构造函数。那里...
使用构造函数或实例函数复制对象实例有什么优点和缺点? 示例A: 类型 TMyObject = 类 严格的私人 FField:整数; 民众 构造函数
可能我对显式的理解不够,但我想知道为什么在下面的代码中,当我将通用引用构造函数声明为
在 C++ 中,当类包含动态分配的数据时,显式定义复制构造函数、operator= 和析构函数通常是合理的。但这些特殊方法的活动是重叠的......
我有一个像这样的 POD 结构 结构体 foo { std::互斥体 m_foo_mutex; 整数a; 整数b; 整数c; //...... }; 它有比这更多的字段,但结构应该很明显。默认复制器...
我有2节课。 指向固定宽度数组的指针和指向用于实现二维浮点数组的指针的指针。 我想了解,是否以及如何将 memcpy 用于我的复制构造函数和
C++ 中的自构造怎么样:复制和移动构造函数是否应该正确处理带有 `*this` 的调用?
当使用对象本身调用复制/移动构造函数时,C++ 中的最佳实践是什么? 例如: #包括 使用命名空间 std; 结构体Foo{ Foo( const Foo& f...
假设我们想要反转一个数组,就像这个函数一样。 对于两个元素的每次交换,都会进行复制构造函数、析构函数和两个复制赋值。 模板 无效回复...
我已经多次在脑海中反复思考,如果提供了复制构造函数,则还必须提供赋值运算符。然而,有时类可以使用复制构造......
如果我有两个类 A 和 B 并且我执行 A=B ,则调用哪个赋值构造函数? A班的还是B班的?
我想刷新一下我的记忆,编译器通常会自动生成默认构造函数、复制构造函数和赋值运算符。 我记得有一些规则,但是...
你能编写一个同时处理复制构造函数和复制赋值运算符的通用函数吗?
由于复制构造函数 MyClass(const MyClass&); 和 = 运算符重载 MyClass& 运算符 = (const MyClass&); 有几乎相同的代码,相同的参数,只有不同......
这种复制构造函数的实现有一些缺点吗? Foo::Foo(const Foo& i_foo) { *这= i_foo; } 我记得,在一些书中建议从
前几天我读到了这篇文章: int 类型的构造函数 但我想我必须先澄清一件事: 假设我有一个类 Myclass 并且我已经创建了一个对象 obj1。 有区别吗