2012-12-13 5 views
0

les frais généraux de la copie deux doubles peut être perceptible, mais souvent moins que ce qu'une paire de pointeurs imposentfrais généraux de copie: double vs pointeurs

de C++ prog. lang.

quelqu'un pourrait-il l'expliquer?

+0

Veuillez ajouter le contexte pertinent, de quoi parle cette personne? – Mat

Répondre

2

Ceci provient du chapitre 11 de "C++ Programming Language" de Stroustrup.

Regardons à la citation dans son contexte:

Nous avons défini les complex opérateurs de prendre des arguments de type complex. Cela implique que pour chaque utilisation d'un opérateur complex, chaque opérande est copié. La surcharge de la copie de deux doubles peut être perceptible mais souvent inférieure à ce qu'une paire de pointeurs impose (l'accès via un pointeur peut être relativement coûteux). Malheureusement, toutes les classes n'ont pas une petite représentation pratique. Pour éviter une copie excessive, on peut déclarer des fonctions pour prendre des arguments de référence. Par exemple:

class Matrix { 
     double m[4][4]; 
public: 
     Matrix(); 
     friend Matrix operator+(const Matrix&, const Matrix&); 
     friend Matrix operator*(const Matrix&, const Matrix&); 
}; 

Tout ce qu'il dit est que, depuis complex est petite, il est acceptable de passer autour de la valeur plutôt que par référence const. Ceci, cependant, ne serait pas acceptable pour les types plus grands, tels que Matrix ci-dessus. Pour un tel type, le passage par const est la méthode préférée puisqu'elle évite d'avoir à copier toute la matrice.

+0

c'est clair, mais pourquoi le surcoût de la copie de deux doubles peut être inférieur à ce qu'impose une paire de pointeurs? – 4pie0

Questions connexes