我得到以下sonarqube静态代码分析错误。
明确定义缺失的复制构造函数、移动构造函数、复制赋值操作符和移动赋值操作符,这样它们就不会被隐式提供。
我在头文件中的Destructor声明处得到了上述信息。
~CCPSDataManager();
而且在我的.cpp文件中,有这个Destructor的定义 ~CCPSDataManager().
在这里,我是否需要遵循5的规则,提供Destructor、copy构造函数和copy-assignment操作符、move构造函数和move-assignment操作符?还是有其他方法?
另外,如果我定义了复制构造函数、复制-赋值操作符、移动构造函数和移动-赋值操作符,我们就会写很多行代码而不使用这些。这是一个正确的方法吗?
请给我一些建议,并给我一些关于如何进行的见解?
这里我需要遵循5的规则,提供Destructor、copy构造函数和copy-assignment操作符、move构造函数和move-assignment操作符吗?
这要看你在destructor中做什么。
在大多数情况下,如果你需要一个destructor,那么你需要遵循第5条规则,因为在大多数情况下,隐式生成的会做错事。并非总是如此,但在大多数情况下。你使用的分析器建议遵循第5条规则,因为假设它可能是必要的。
还是有其他方法?
如果不需要自定义destructor,那就遵循0的规则。不要定义一个自定义的destructor.
还有如果我定义了复制构造函数、复制-赋值操作符、移动构造函数和移动-赋值操作符,我们在写很多行代码的时候就不用这些了。
如果你不用它们,那么最简单的解决办法就是定义它们删除。