我认为这是MSVC中的有效代码:
MyClass* pMc = &MyClass();
但是,当我尝试对原始数据类型做同样的事情时,我遇到了编译错误。
int* pInt = &int();
错误:
error C2101: '&' on constant
我有3个问题:
- 为什么
int()
给我一个常数? - 为什么首先存在错误C2101?获取常量的地址有什么问题?
- 有没有办法可以声明指向临时对象的 int (或其他原始)引用?(即不先创建局部变量)
关于第三个问题:
我不想做这样的事情:
int i = int();
int* pInt = &i;
如果我正在使用对本地对象的引用(原因无关紧要),我不想必须两次声明每个对象。这很乏味,很烦人,而且名字真的很混乱。