在c++中,我可以编写一个带有构造函数的类,该构造函数接受
是否有必要同时拥有
这个问题同样适用于函数参数。
std::string
参数。这将允许我从std::string
或char *
构建此类的实例,由于隐式转换。是否有必要同时拥有
std::string
构造函数和char *
构造函数呢?class MyStringClass {
public:
MyStringClass( const std::string &str ); // char *'s could implicitly use this constructor
MyStringClass( const char * str ); // would this ever be necessary?
};
这个问题同样适用于函数参数。
void do_stuff_with_string( const std::string &str );
void do_stuff_with_string( const char * str );
编辑:
为了澄清,我更关注性能。假设这些构造函数/函数调用到只接受char *
的API。如果我不需要构造std::string
,是否值得拥有这两个单独的函数?
void do_stuff_with_string( const std::string &str )
{
do_stuff_with_string( str.c_str() );
}
void do_stuff_with_string( const char * str )
{
// call some api that only accepts char *
}