请允许我先发布我的代码:
void Fun(short &s){}
void FunCon(const short &s){}
int main()
{
int iTest = 20;//note: iTest is int but parameter of Fun is "short &"
Fun(iTest);//error, I know there is a temp variable(typecast)
FunCon(iTest);//ok
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道Fun(iTest);会生成一个新的临时变量(类型转换),但我想知道临时变量是否是一个常量?
如果否:为什么我不能将临时变量传递给short &
如果是:我有另一个这样的代码:
class MyObject{
public :
void F(){}
};
MyObject MOCreator(){
return MyObject();
}
int main()
{
MOCreator().F();//OK
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果返回的临时变量MOCreator() 是常量,为什么临时变量可以调用非常量成员函数?
我的问题是? …
c++ casting constants pass-by-reference pass-by-const-reference
请允许我先向您展示我的代码:
void testStringAdd(){
char c = '$';
string str = "";
str += c;//the same as `str = str + c;`
cout << str << "---";
cout << "size : " << str.size() << endl;
str = "" + c;//the same as `str = c + ""`;
cout << str << "---";
cout << "size : "<< str.size() << endl;
}
Run Code Online (Sandbox Code Playgroud)
我预计输出是:
$ ---尺寸:1
$ ---尺寸:1
但vs2013的实际输出是:
$ ---尺寸:1
---大小:0
这是一个有趣的现象,我想知道它为何如此奇怪?
注意:如果我编码string str = "";然后str == "" …