有关引用的问题
一个函数的声明是:int bar(String &s);
对这个函数的一个调用是:bar("hello world");
请问这样调用有错误吗?为什么错误?怎么修改才正确?
[解决办法]
有错, "hello world"是const 字符串,不允许修改它的内容,你可以像下面这样改:
string str = "hello world";
bar(str);
[解决办法]
我也是初学者,非const引用形参只能接收非const实参,而"hello world"会作为const对象,编译出错。可以将String &s改为const String &s或者非引用形参String s。前者不允许函数里对参数更改。后者可以,但是是复制实参的模式。希望对你有帮助。
[解决办法]
是没有修改,但是,编译器是不会去判断你在调用的程序中有没有去改变,如果你确实不会修改,那么你定义为int bar(const string &s);吧
[解决办法]
你的形参是普通的string&类型,而实参是const string类型,普通引用类型不能接受const实参
[解决办法]
改成int bar(const String &s);
楼上说的很清楚了
[解决办法]
改成int bar(const String &s);
或者:string str = "hello world";
bar(str);