C++Tipo de Devolución Covarianza


Observaciones

La covarianza de un parámetro o un valor de retorno para una función miembro virtual m es donde su tipo T vuelve más específico en el reemplazo de m de una clase derivada. El tipo T luego varía ( varianza ) en especificidad de la misma manera ( co ) que las clases que proporcionan m . C ++ proporciona soporte de lenguaje para los tipos de retorno covariantes que son punteros en bruto o referencias en bruto, la covarianza es para el tipo de pointee o referente.

El soporte de C ++ está limitado a los tipos devueltos porque los valores de retorno de la función son los únicos argumentos de salida puros en C ++, y la covarianza solo es segura para un argumento de salida puro. De lo contrario, el código de llamada podría proporcionar un objeto de un tipo menos específico del que espera el código de recepción. La profesora del MIT Barbara Liskov investigó esto y relacionó los problemas de seguridad de tipo de varianza, y ahora se conoce como el Principio de Sustitución de Liskov, o LSP .

El soporte de covarianza esencialmente ayuda a evitar la reducción de emisiones y la comprobación dinámica de tipos.

Dado que los punteros inteligentes son del tipo de clase, no se puede usar el soporte integrado para la covarianza directamente para los resultados del puntero inteligente, pero se pueden definir funciones de envoltura de resultados del puntero inteligente no virtual aparentemente covariantes para una función virtual covariante que produce punteros en bruto.

Tipo de Devolución Covarianza Ejemplos relacionados