构造函数接受字符串引用.馊主意?

Sal*_*lv0 2 c++ oop constructor reference

它被认为是一个坏主意/糟糕的设计,有一个类接受引用的构造函数,如下所示?

class Compiler
{
public:
  Compiler( const std::string& fileName );
  ~Compiler();
//etc
private: 
  const std::string& m_CurrentFileName;
};
Run Code Online (Sandbox Code Playgroud)

或者我应该使用价值观?我实际上关心性能.

小智 16

如果在这种情况下使用了value参数,那么您将在类中引用一个临时引用,这在将来的某个时候将变为无效.

这里的坏主意可能是将引用存储为类中的成员.存储值几乎总是更简单,更正确.在这种情况下,传递构造函数一个const引用是正确的事情.

至于性能,你应该只关心它的重要性,你只能通过分析你的代码来找到它.您应该始终首先编写代码以确保正确性,其次是为了清晰起见,最后是性能.