gpt4 book ai didi

c++ - 类的成员复制

转载 作者:太空狗 更新时间:2023-10-29 21:07:21 24 4
gpt4 key购买 nike

在学习“复制成员”的概念时,书中给出了如下说法。

In addition, a default assignment cannot be generated if a nonstatic member is a reference, a const,or a user-defined type without a copy assignment.

我不太明白这个声明到底想表达什么?或者这个说法指的是哪种场景?谢谢。

最佳答案

此语句与编译器自动为您编写的类(即用户定义类型)生成默认赋值运算符函数有关。默认分配通过将所有成员复制到新实例来工作。此声明涵盖三种情况,其中无法能够生成默认分配:

1) 当成员是引用时(即引用变量的实例,如指针)

class Foop {
int& reference;
};

2) 当成员变量为常量时

class Foople {
const int someConst;
};

3) 当其他一些类没有复制构造函数而你有该类型的成员变量时,显然不能使用默认方法(使用复制构造函数)复制它

class Uncopyable {
private:
Uncopyable(Uncopyable const& other);
};

class Fleep {
Uncopyable uncopyable;
};

在这些情况下,您需要编写自己的赋值运算符(或者可能不需要)。

关于c++ - 类的成员复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5320675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com