☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

拷贝构造函数的参数应为同类对象的 const 左值引用

6.8.4 ID_illCopyConstructorParam
目录 › next › previous

如果构造函数的参数不是同类对象的左值引用,则不构成拷贝构造函数,拷贝构造函数不应具备复制之外的功能,故其参数不应被修改,应受 const 关键字限制。

拷贝构造函数可能会被优化而导致复制之外的功能不生效,可参见 ID_sideEffectCopyConstructor 的进一步讨论。

示例:

struct A {
    A(A);    // Non-compliant, logic and compile error
    A(A&);   // Non-compliant, missing ‘const’
};

拷贝构造函数不可按值传递参数,否则会再次调用拷贝构造函数,从而陷入无限递归。

应改为:

struct A {
    A(const A&);   // Compliant
};

相关

ID_sideEffectCopyConstructor ID_nonStdCopyAssignmentParam ID_nonConstUnmodified
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.