class A
{
public:
int m[10];
int& operator [] (constint i)
{
return((m[i]));
}
};
int main()
{
A oA;
oA[2] = 5;
}
这个人没有。
class A
{
public:
int* m[10];
int* operator [] (constint i)
{
return((m[i]));
}
};
int main()
{
A oA;
oA[2] = newint; // error C2106: =: левый операнд должен быть левосторонним значением
}
愚蠢。你能告诉我为什么你不能这样做吗?
明白了。
解释一下
解释一下
这里[0]是r值。
这就是不清楚的地方。
如果该任务在第一种情况下有效,那么从逻辑上讲,它在第二种情况下也应该有效。因为在第一种情况下,相同的r值被分配给了指针,但运算符随后就起作用了!
当然,这只是我的看法。但我想把它弄出来。
这就是我不明白的地方。
我也不明白。))更新,已经得到了。
如果转让在第一种情况下有效,那么从逻辑上讲,它在第二种情况下也应该有效。这是因为在第一种情况下,相同的r值被分配给了指针,但运算符在这之后就起作用了!"。
当然,这只是我的看法。但我想把它弄出来。
rvalue只能被分配给一个左手的值,或者是一个临时的常数。
这也是在利物浦工作的原因。
这个人没有。
这个不是,我也搞不清楚其中的区别。
如果你在指针上添加一个链接,它就会发挥作用。或一个双倍的指针。
哎呀,我慢下来了,第二个例子根本就不对。
这就是为什么符合逻辑的是
错误:从'int*'类型的r值初始化'int*&'类型的非静态引用无效