在析构函数中进行函数调用是一种好习惯吗?

arm*_*dle 1 c++ destructor

假设对象有一个析构函数:

anObject::~anObject()
{
    _functionCalledfromDestructor=1; //this sets the flag = 1
    functionCall(); //this function does something different than usual
                    //on seeing the flag
}
Run Code Online (Sandbox Code Playgroud)

我的问题:

这种在析构函数中编码的样式/方法是一种好的做法吗?

Ern*_*ill 10

像这样的"隐藏频道"总是一个坏主意.函数的行为不应该依赖于不可见的状态.你可以给函数一个参数,然后在析构函数中传递一个值,在其他地方传递另一个值.如果您愿意,可以对更常见的情况使用默认值.


R. *_*des 7

这种在析构函数中编码的样式/方法是一种好的做法吗?

如果函数根据调用的位置执行两个不同的操作,那么您有两个函数,而不是一个函数.使这两个函数实际上是两个函数,你不需要问这个问题.

  • @armundle大多数人会使用你使用全局变量的参数. (8认同)