据我所知,当类是POD类时,C默认复制构造函数仅按预期运行.
我想知道是否有一个解决方案可以阻止程序员编写代码(如果对象不是POD,则隐含或不利用)使用默认的复制构造函数.
我知道您可以随时将您的副本和分配私有化以解决此问题,但我想知道是否有自动解决方案.例如,如果您的代码生成默认的复制构造函数调用且您的类不是POD,编译器可能会生成警告?
这里的目标是检测我忘记声明复制/分配私有或手动定义它们的情况.
你们也知道cppcheck能做到吗?
解决方法:
禁用默认构造的集中方法是使默认构造函数不可访问.
你写道:“我想知道是否有一个解决方案可以阻止程序员编写代码(如果对象不是POD,那么(隐含或不相关)使用默认的拷贝构造函数.”
大概你的意思是你希望编译器对任何非POD对象的任何默认构造作出反应.
对不起,没有编译器独立的方式.
原因:很多非POD类,如智能指针和容器(如std :: vector),依赖于默认构造很有用.
g编译器有一个选项-Weffc来警告违反Scott Meyers的Effective C中的指南,但据我所知 – 我可能错了 – 这不包括你的情况.但据说可以说是有用的.
干杯&心连心,