C ++没有使用字符串参数调用重载函数

时间:2016-08-31 13:54:55

标签: c++ overloading

我重载了以下功能:

void myClass::saveAsMat (bool complete){
  ...
}

void myClass::saveAsMat (std::string filename){
  ...
}

在我的main.cpp中,当我调用这样的函数时:

myObj.saveAsMat(true);

everthing工作正常。但是,当我改为调用这样的函数时:

myObj.saveAsMat("myName");

该功能根本没有被执行。我期望编译或运行时错误,但没有这样的。该程序被编译并仅运行该函数被忽略。 (我通过在函数中放置一些std::cout来检查这一点。

然后我发现我可以通过改变传递给的参数来解决这个问题:

myObj.saveAsMat(string("myName"));

为什么我必须为参数设置额外的string()?其他未过载的函数只需将"myName"传递给"std::string"参数即可正常工作。

0 个答案:

没有答案