gpt4 book ai didi

C++ 赋值运算符 - 编译器生成的还是自定义的?

转载 作者:可可西里 更新时间:2023-11-01 17:03:55 27 4
gpt4 key购买 nike

我有一个中等复杂的 C++ 类,它包含一组从磁盘读取的数据。它包含 float 、整数和结构的折衷组合,现在已被广泛使用。在主要代码审查期间,有人问我们是否有自定义赋值运算符,或者我们是否依赖编译器生成的版本,如果有,我们如何知道它是否正常工作?好吧,我们没有编写自定义作业,因此添加了一个单元测试来检查我们是否这样做:

CalibDataSet datasetA = getDataSet();
CalibDataSet dataSetB = datasetA;

那么datasetB和datasetA是一样的。几百行左右。现在客户坚持认为我们不能依赖编译器 (gcc) 在未来的版本中是正确的,我们应该自己编写。他们坚持这样做对吗?

附加信息:

我对已经发布的答案/评论和响应时间印象深刻。提出这个问题的另一种方式可能是:POD 结构/类何时变为“非”POD 结构/类?

最佳答案

众所周知,自动生成的赋值运算符会做什么 - 这被定义为标准的一部分,并且符合标准的 C++ 编译器将始终生成行为正确的赋值运算符(如果没有,则它不会是符合标准的编译器)。

如果您已经编写了自己的析构函数或复制构造函数,通常只需要编写自己的赋值运算符。如果您不需要这些,那么您也不需要赋值运算符。

关于C++ 赋值运算符 - 编译器生成的还是自定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3571975/

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