一個框架,我需要使用的定義可以互斥所有者姓名存儲爲調試輔助一個簡單的互斥體類副本的時候我斷碼只是改變了一些算法使互斥鎖類型的模板參數,這樣我可以在這一個性能方面的原因通過,如果不需要鎖定:將返回,而不是常引用
class non_mutex
{
public:
explicit non_mutex(const std::string& mutex_owner = "") {}
bool acquire() const {return true;}
bool release() const {return true;}
std::string get_name() const {return "";}
};
因爲這一個不保存名稱(有沒有必要調試這個),我改變了get_name()
成員函數返回一個std::string
,而不是const std::string&
。
現在我的問題是:難道這(默默)破壞任何東西?代碼編譯得很好,似乎也運行良好,但是在這個代碼庫中的測試很少,而且這個函數大多隻在錯誤發生時才使用,而不是常規。
這種更改會導致運行時失敗的情況是什麼?
注意,這是一個C++ 03的環境,但我很想在C++ 11分的答案了。
分配確實可能是一個問題,如果不太可能的話。鑑於我們在這裏還沒有右值引用,因此調用不同的重載有什麼潛力? (我正在擔心這些孩子的問題,這是一個24/7全天候運行的小設備。) – sbi
你可能會很幸運:如果你的'std :: string'有一個小的字符串優化,那麼我認爲'std: :non_mutex :: get_name()'應該不在你的實現中。 –