1. Comprensión 80-20 Directrices
2. Considere el uso de método de evaluación perezosa
Por ejemplo el recuento de referencias acercarse a la clase string
Distinguir entre lectura y escritura
extracto de Lazy: puntero a IMPLEMENTACIÓN DE las ideas de diseño
evaluación de la expresión perezosa
3. Calcular la amortización deseado
el consumo por delante de tiempo compartido de computación está por encima de una idea contraria, método de cálculo demasiado entusiasta
Por ejemplo, utilizando la memoria caché (considerado en el cálculo, o con más frecuencia la misma operación se repite)
.vector lógica de expansión de memoria contenedor
4. Entender el origen de los objetos temporales
El establecimiento de un objeto sin nombre no producirá montón objetos temporales, puede crear, por ejemplo, nombre de tipo (...) Manual;
Más en general, la conversión implícita se genera en la llamada de función se genera o cuando la función devuelve.
referencia const objetos sin temporales (llamada de función)
5. Ayudar a la optimización del valor de retorno
objeto devuelto es inevitable.
Usted debe considerar la reducción del coste de las declaraciones de objetos en lugar de objetos evitar volver.
Devuelve el objeto de alguna manera que permite al compilador para eliminar la sobrecarga de objetos temporales.
Ese argumento del constructor de retorno en lugar de un retorno directo al objeto.
const Rational operator*(const Rational& lhs, const Rational& rhs)
{
return Rational(lhs.numerator() * rhs.numerator(), lhs.denominator() + rhs.denominator());
}
El establecimiento de un objeto temporal devuelto. Constructor y destructor de consumo dentro de este método todavía tiene una función de objeto temporal, Object constructores y destructores consumo tendrán.
Beneficio es c ++ reglas permiten que el compilador para optimizar objetos temporales no aparece, de la siguiente manera:
Rational a = 10;
b Rational (1, 2);
Rational c = a * b;
Se permitirá como para llamar al compilador para eliminar las variables temporales del gestor y operador * * variables temporales regresaron, dejando sólo una función de la estructura de costos, que la estructura C.
c no puede ser eliminada, ya que c es un objeto con nombre, objeto llamado no puede ser eliminado. Además de esta función también se puede declarada en línea para eliminar su cabeza llamada.
6. Al evitar la sobrecarga de conversiones de tipos implícitos
7. Considere solos formar una forma de asignación operador sustituido (op =)
8. considerar el cambio de la biblioteca
9. apreciará funciones virtuales, la herencia múltiple, y las clases base virtuales cuestan RTTI
Aprender puntero virtual tabla y la tabla virtual, es decir VTBL y la VPTR. VTBL es generalmente una función de una matriz de punteros (o lista). Declaradas en la clase o heredadas funciones virtuales, tienen su propio
VTBL, puntero de la ejecución del proyecto VTBL es un puntero a la función miembro virtual.
El coste necesario para la llamada de función virtual llamada a una función sustancialmente la misma que a través de un puntero de función, la función virtual en sí no suele ser un cuello de botella en el rendimiento.
funciones virtuales no pueden ser inline,