考虑一个具有静态成员和静态方法来设置成员值的类(以下基于 @JamesKanze 的 example ):
class A_EXPORT InA
{
public:
static FILE* ourDest;
static void setDest( FILE& dest );
};
安article (on logging) in Dr. Dobbs建议将静态成员和静态方法组合如下:
// in header file
class A_EXPORT InA
{
public:
static FILE*& theDest(); // a static member that is a static method too!
};
// in cpp file
FILE*& InA::theDest()
{
static FILE* pStream = stderr;
return pStream;
}
// in user's file
InA::theDest() = fopen("log.txt","a"); //std::ofstream( "log.txt" );
问题:结合静态成员和静态方法有什么优缺点?
最佳答案
此模式通常称为 Meyer's singleton ,单例设计模式的实现。
主要优点是它能够处理static initialization order fiasco ,这基本上是无法预测跨翻译单元初始化静态对象的顺序。
关于c++ - 组合静态成员和方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24027333/