我只是写了一个函数:std :: string如何管理这个技巧?
void doSomeStuffWithTheString(const std::string& value) {
...
std::string v = value;
std::cout << value.c_str();
...
}
但后来我把这个与
doSomeStuffWithTheString("foo");
和它的作品。所以我会认为这是行得通的(一个const char *来初始化一个std :: string的隐式实例)该值将不得不通过值传递,但在这种情况下通过(const)引用传递。
是否有任何机会一个隐式的时间std ::字符串实例从const char *当引用是常量?如果没有,那么这可能如何工作?
编辑
如果函数与
void doSomeStuffWithTheString(const char* value);
哪一个会选择编译器超载会发生什么?
你几乎回答了你自己的问题:) – pezcode
有趣,不知道。什么是对象需要这样做会有这样的隐式构造函数发生在const-by-ref调用上(以及如何避免它)? – lurscher
程序格式不正确:'std :: string = value;'无效并且应该被你的编译器拒绝。 –