class F{
public:
F(string name){}
};
int main()
{
F f("hello");
}
编译出错
但如果构造函数改成 F(const char *name) 就变异通过
求助 大侠 给予解释
------解决方案--------------------------------------------------------
估计楼主是想把 char*直接当参数传入 string为参数的函数.
string隐式转换 是从 string --> const char *
但不能从 char* --> string (在使用=号和构造的时候与此不同)
------解决方案--------------------------------------------------------
"hello"是const char *类型,不是string类型。
------解决方案--------------------------------------------------------
给"hello"分配的空间默认是常量数据区, 带有const 特性的,直接传给不带 const限定的参数,当然有问题了。string完全属于C++的范畴,对const的使用更加严格。如果是C,你可以 char *p = “hello”;或者是C++中的C,为了兼容C,也能通过。但是string完全属于C++,所以编译器要求更严格