在有效的C++到對象(項目18:使接口易於正確使用,而難以錯誤地使用),我看到類似於以下一個代碼示例:返回靜態const引用從功能
class Month
{
public:
static Month Jan()
{
return Month(1);
}
static Month Feb()
{
return Month(2);
}
//...
static Month Dec()
{
return Month(12);
}
private:
explicit Month(int nMonth)
: m_nMonth(nMonth)
{
}
private:
int m_nMonth;
};
Date date(Month::Mar(), Day(30), Year(1995));
是否有更改函數的任何缺點,以便它們將靜態常量引用返回給Month?
class Month
{
public:
static const Month& Jan()
{
static Month month(1);
return month;
}
static const Month& Feb()
{
static Month month(2);
return month;
}
//...
static const Month& Dec()
{
static Month month(12);
return month;
}
private:
explicit Month(int nMonth)
: m_nMonth(nMonth)
{
}
private:
int m_nMonth;
};
我以爲第二個版本比第一個版本更高效。
_primary_的事情是你的代碼在C++ 03中不是線程安全的,只符合C++ 11編譯器。 – ildjarn 2012-07-07 15:33:43