Uy, me estoy frenando, el segundo ejemplo no es del todo correcto.
Por eso es lógico que
error: inicialización inválida de una referencia no-const de tipo 'int*&' desde un rvalue de tipo 'int*'
Sí, ya escribí sobre ello más arriba. He modificado la segunda muestra pero sigue sin funcionar. El operador devuelve un valor, es decir, una copia. Los tres nos habremos quedado tan obtusos, ¡eh! ))
Комбинатор: Entonces, ¿por qué funciona la primera pieza del ejemplo de fxsaber?
¿Por qué no habría de hacerlo? Tiene una expresión this[0] que devuelve un puntero. Aquí está lo mismo en una forma diferente:
int a;
int* Func(int& i)
{
return(&i);
}
int* p = Func(a); // работает, то же что A* a = this[0]
Func(a) = newint; // не работает, то же, что и this[0] = new int
El problema es que el puntero (descriptor) de rvalue se convierte de alguna manera en lvalue después de ser asignado a una variable. Es un poco loco...
Комбинатор: El problema es que el puntero (descriptor) de rvalue se convierte de alguna manera en lvalue después de ser asignado a una variable. Eso es un poco loco...
Sí, soy yo quien está confundido. Después de
A* a = this[0];
a = new A; // так работает
La expresión
CheckPointer(this[0]) == POINTER_INVALID
será cierto. Lo cual tiene mucho sentido.
Los promotores deben formular la razón por la que es imposible de forma clara y agradable
Sigo sin entender el último ejemplo. La sobrecarga del operador "=" en la clase A convierte este[0] de rvalue en lvalue... No sé cómo. ¿Es algún tipo de característica de la ACM, no hay tal comportamiento en los profesionales.fxsaber, ¿cómo has llegado a esta construcción? Me refiero a la sobrecarga = en A. ¿O por ensayo y error?
Uy, me estoy frenando, el segundo ejemplo no es del todo correcto.
Por eso es lógico que
error: inicialización inválida de una referencia no-const de tipo 'int*&' desde un rvalue de tipo 'int*'
Los tres teníamos que ser tan tontos, ¡eh! ))
Entonces, ¿por qué funciona la primera pieza del ejemplo de fxsaber?
¿Por qué no habría de hacerlo? Tiene una expresión this[0] que devuelve un puntero. Aquí está lo mismo en una forma diferente:
this[0] es rvalue aquí.
Resultado El problema es una tontería. Por desgracia, el vocabulario es escaso para explicarlo.
fxsaber:
Точно не так
Результат
El problema es un cierto sinsentido
Por desgracia, el vocabulario es escaso para la explicación.Vale, no tengo ganas de pensar. Ya estoy cansado.
El problema es que el puntero (descriptor) de rvalue se convierte de alguna manera en lvalue después de ser asignado a una variable. Eso es un poco loco...
La expresión
será cierto. Lo cual tiene mucho sentido.
Los promotores deben formular la razón por la que es imposible de forma clara y agradable
Sí, lo he estropeado.
En resumen, todo está bien :)