c – 禁用非POD类的默认构造函数

据我所知,当类是POD类时,C默认复制构造函数仅按预期运行.

我想知道是否有一个解决方案可以阻止程序员编写代码(如果对象不是POD,则隐含或不利用)使用默认的复制构造函数.

我知道您可以随时将您的副本和分配私有化以解决此问题,但我想知道是否有自动解决方案.例如,如果您的代码生成默认的复制构造函数调用且您的类不是POD,编译器可能会生成警告?

这里的目标是检测我忘记声明复制/分配私有或手动定义它们的情况.

你们也知道cppcheck能做到吗?

解决方法:

禁用默认构造的集中方法是使默认构造函数不可访问.

你写道:“我想知道是否有一个解决方案可以阻止程序员编写代码(如果对象不是POD,那么(隐含或不相关)使用默认的拷贝构造函数.”

大概你的意思是你希望编译器对任何非POD对象的任何默认构造作出反应.

对不起,没有编译器独立的方式.

原因:很多非POD类,如智能指针和容器(如std :: vector),依赖于默认构造很有用.

g编译器有一个选项-Weffc来警告违反Scott Meyers的Effective C中的指南,但据我所知 – 我可能错了 – 这不包括你的情况.但据说可以说是有用的.

干杯&心连心,

上一篇:php – 警告:filesize函数无法运行


下一篇:使用Python 3中的urllib进行socket ResourceWarning