copy-constructor 相关问题

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

C++中的复制构造函数在从函数返回对象时被调用?

我了解复制构造函数是在三个实例上调用的 当实例化一个对象并使用另一个对象的值对其进行初始化时。 按值传递对象时。 3. 当一个物体是

回答 5 投票 0

作品中没有名为“oeuvre”的成员

类作品{ 私人的: 字符串滴定度; 作者&作者; 弦语言; [...] }; 示例类{ 私人的: 作品&作品; 公众:...

回答 1 投票 0

C++:Oeuvre 中没有名为“oeuvre”的成员

类作品{ 私人的: 字符串滴定度; 作者&作者; 弦语言; }; 示例类{ 私人的: 作品&作品; 民众:

回答 1 投票 0

C++ 和 ExprTk 解析器“使用已删除函数”错误

我正在尝试在一个类中使用 ExprTk 数学表达式解析器库,该类的对象将存储在对象向量中,该对象向量是另一个类的成员变量;然而,当...

回答 2 投票 0

你能关闭C++中的默认复制构造吗?

我不喜欢复制构造。已经写过很多次了 无效MyFunc(MyClass val) 而不是 void MyFunc(const MyClass& val) 并且不得不花费数小时调试指针 h 周围的错误...

回答 3 投票 0

删除复制构造函数和复制赋值运算符。其中哪些是必不可少的?

我有一个用例,即我的对象不得以任何方式复制。我在下面写了一份夸张的复制构造函数和复制赋值运算符删除的完整列表。其中有很多

回答 2 投票 0

在disable_if_same_or_driven情况下替换std::is_base_of_v

Eric Niebler 不久前写了一篇关于通用引用和复制构造函数的文章: 尼布勒 最后的解决方案是 模板 使用

回答 1 投票 0

GCC 不会为类外默认复制构造函数生成机器代码

假设以下源文件(翻译单位;TU): 结构体 X { 整数我; X(常量X&); X(X&&); }; X::X(const X&) = 默认值; X::X(X&&) = 默认值 如果我比较...

回答 1 投票 0

标准库中是否定义了具有复制构造函数但没有移动构造函数的类型?

一般来说,C++ 标准库类型的设计同时考虑了复制和移动语义。 标准库中是否定义了任何具有复制构造函数但没有...

回答 1 投票 0

对象的状态在其构造之后和成员函数调用之前发生变化

下面的程序已尽可能减少以显示 Visual Studio C++ 编译器遇到的问题。 f 是一些接受输入谓词对象 P p 的算法函数,它具有用户德...

回答 1 投票 0

复制构造函数并创建临时对象 C++

让我使用矢量对象作为示例,但它适用于任何对象。 创建一个对象是否安全 MyVector xyz(std::vector(10)); 假设有一个构造函数将

回答 1 投票 0

仅使用显式移动构造函数返回对象

以下代码无法编译: #包括 类 Foo{ 民众: Foo(const Foo& foo) = 删除; 显式 Foo(Foo&& foo) = 默认; Foo() = 默认值; 福...

回答 1 投票 0

为什么 std::variant 类型不能是具有显式复制构造函数的类?

如果我使用类型的类创建 std::variant,并向其中一个类添加显式复制构造函数,编译器会抱怨。使用默认或非显式的复制构造函数

回答 1 投票 0

派生QT类的复制构造函数

我有一个从QWidget公开继承的类: 类 MyWidget :公共 QWidget { Q_OBJECT 民众: MyWidget(const MyWidget& other) : obj1(其他.obj1), obj2(其他...

回答 3 投票 0

为什么默认的复制构造函数可以复制const或引用成员,但默认的复制赋值运算符却不能?

课堂测试{ 整数; 常量 int 常量值; 整数&参考; 民众: 测试(int a):constVal(2),ref(a){ std::cout<<"create"< class Test{ int num; const int constVal; int& ref; public: Test(int a):constVal(2),ref(a){ std::cout<<"create"<<std::endl; } }; int main() { int a=23; Test tOne(a); Test tTwo=tOne; return 0; } 我知道如果一个类有const或reference成员,编译器不会产生默认的复制赋值函数。因为给const或reference对象赋值是非法的。我想知道为什么复制构造函数工作得很好并且我理解它们的行为应该是一致的 常量和引用成员一旦构造就无法修改。 但它们可以在构造函数中设置,这正是默认复制构造函数的作用。 为什么默认的复制构造函数可以复制 const 或引用成员,但默认的复制赋值运算符却不能? 因为构造函数执行初始化,它只发生一次,并且允许用于const数据成员,而赋值运算符执行赋值,这对于const数据成员来说是不允许的。

回答 2 投票 0

如果我不声明移动构造函数,则会调用复制构造函数,但如果我删除移动构造函数 - 编译错误 - 为什么?

结构X { X() = 默认值; X(const X& src) { 计算<< "copy" << endl; } }; int main() { X x1; X x2(move(x1)); } Output: copy stru...

回答 1 投票 0

C++:如果我不声明移动构造函数,则会调用复制构造函数,但如果我删除移动构造函数 - 编译错误 - 为什么?

结构X { X() = 默认值; X(const X& src) { 计算<< "copy" << endl; } }; int main() { X x1; X x2(move(x1)); } Output: copy stru...

回答 1 投票 0

这里不应该有一个copyctor调用吗?禁用省略(无命名返回值优化)

结构测试{ int 字段 = 30; 测试(){cout<< "In ctor" << endl; } Test(const Test &other) { field = other.field; cout << "In copy ctor" <&...

回答 1 投票 0

如何知道编译器是否会使用复制省略以及我是否需要使用 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

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