假设我有一堂课:
class String
{
public:
String(char *str);
};
还有两个功能:
void DoSomethingByVal(String Str);
void DoSomethingByRef(String &Str);
如果我这样调用 DoSomethingByVal:
DoSomethingByVal("My string");
编译器发现它应该创建一个临时 String 对象并调用 char* 构造函数。
但是,如果我尝试以相同的方式使用 DoSomethingByRef,我会收到“无法将参数从 'char *' 转换为 'String &'”错误。
相反,我必须显式创建一个实例:
DoSomethingByRef(String("My string"));
这可能会让人讨厌。
有没有办法避免这种情况?