我有几个类除了在它们的构造函数/析构函数中什么都不做。这是一个例子
class BusyCursor
{
private:
Cursor oldCursor_;
public:
BusyCursor()
{
oldCursor_ = CurrentCursor();
SetCursor(BUSY_CURSOR);
}
~BusyCursor()
{
SetCursor(oldCursor_);
}
}
// example of use
void DoSlowThing
{
BusyCursor busy;
... do something time-consuming ...
}
我有点担心 future 的可读性。我在这里是不是太“狡猾”了,变量(“忙”)从未在代码中实际使用过?某些静态分析工具是否会建议将它们删除,或者这个习语是否足够普遍而无需担心?
最佳答案
这种技术非常普遍,被称为设计模式:Resource Acquisition Is Initialization (RAII) .
我会毫不犹豫地使用这种设计模式。
最好使用这种设计模式进行编码,因为您可以通过忘记重置光标或任何有问题的资源来避免错误。
如果你担心其他程序员可能不理解它,那么那些程序员应该接受更多的教育。始终努力以最无错误的方式编写代码,这样您和其他人就不可能搬起石头砸自己的脚。
“一些静态分析工具可以建议将它们删除吗?”
- 任何静态分析工具都不会将此视为问题。
- 不会给出编译警告
- 任何编译器优化都不会导致任何问题。
原因是因为创建了对象,调用了构造函数/析构函数。所以它不是一个未引用的变量。
关于c++ - 好的或坏的 C++ 习语 - 对象纯粹用于构造函数/析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/435322/