我直接向您显示代码。
#include <iostream>
#include <stdio.h>
class A {
public:
A(const std::string& name){
std::string aname = "HAHA_" + name;
std::cout << aname << std::endl;
}
~A(){
std::cout << "Done." << std::endl;
}
};
int main() {
size_t len = 5;
char szTmp[30] ={0};
snprintf(szTmp,sizeof(szTmp),"Getlist_V2_%zd",len);
A a(std::string(szTmp));
return 0;
}
预期结果如下:
HAHA_Getlist_V2_5
Done.
但是它什么也不输出。当我更换A a(std::string(szTmp));
使用A a(szTmp);
,erverything是确定的。很长一段时间让我感到困惑。
A a(std::string(szTmp));
这是一个函数声明,信不信由你!因此,没有A
构造。
而是这样写:
A a{std::string(szTmp)};
或者,由于std::string
存在对的隐式转换,因此满足以下任一条件:
A a{szTmp};
A a(szTmp);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句