c++ - 类的成员复制

标签 c++ class copy-constructor

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

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/

相关文章:

c++ - 可以通过在基类中声明复制构造函数/运算符私有(private)来使派生类不可复制吗?

c++ - 链表插入、删除、排序

c++ - += 一对运算符和 make_pair 与模板

ios - 从不同的 View 更改 View textLabel

c++ - C++中的二叉搜索树复制构造函数

被调用的对象不是函数 c

c++ - boost 侵入式/二叉搜索树

c++ - Lambda 捕获 shared_ptr 成员

c++ - 将 const char* 赋值给 char 时类型不兼容

c++ - 在临时对象上复制构造函数 c++