Комбинатор : 그렇다면 fxsaber 예제의 첫 번째 부분이 작동하는 이유는 무엇입니까?
그러면 안되는 이유는 무엇입니까? this[0] 표현식은 포인터를 반환합니다. 다음은 다른 형식으로 동일합니다.
int a;
int * Func( int & i)
{
return (&i);
}
int * p = Func(a); // работает, то же что A* a = this[0]
Func(a) = newint ; // не работает, то же, что и this[0] = new int
나는 아직도 마지막 예를 이해하지 못한다. 클래스 A에서 "=" 연산자를 오버로딩하면 this[0]이 rvalue에서 lvalue로 바뀝니다... 방법을 알 수 없습니다. 이것들은 MKL의 일부 기능이며 프로에는 그러한 동작이 없습니다. fxsaber , 어떻게 이 디자인을 추측했습니까? 과부하 = A를 의미합니다. 아니면 무작위로?
오, 나는 속도를 늦추고 있어, 두 번째 예는 일반적으로 틀리다
따라서 논리적입니다.
오류: 'int*' 유형의 rvalue에서 'int*&' 유형의 비 const 참조 초기화가 잘못되었습니다.
뭐, 셋 다 그렇게 무뚝뚝할 필요는 있었어, 응! ))
그렇다면 fxsaber 예제의 첫 번째 부분이 작동하는 이유는 무엇입니까?
그러면 안되는 이유는 무엇입니까? this[0] 표현식은 포인터를 반환합니다. 다음은 다른 형식으로 동일합니다.
this[0]은 rvalue입니다.
결과 문제는 약간의 무감각 불행히도, 어휘는 설명하기가 열악합니다.
fxsaber :
Точно не так
Результат
문제는 약간의 무감각
불행히도, 어휘는 설명하기가 열악합니다.알았어, 생각하지마. 피곤해.
문제는 어떤 이유로 rvalue의 포인터(설명자)가 변수에 할당된 후 lvalue로 변한다는 것입니다. 망상...
표현
사실이 될 것입니다. 완전히 논리적입니다.
그리고 개발자들이 불가능에 대한 이유를 명확하고 아름답게 공식화하면 좋을 것입니다.
네, 제가 망쳤습니다.
간단히 말해서 모든 것이 좋습니다. :)