Bonjour a tous,
ça fait 5 jours que j'ai posté ce message et je ne le vois pas sur le
forum problement un problème!
J'ai trouvé le code suivant pour l'orérateur =:
const Maclass& Maclass::operator=(const Maclass&right)
{
if (&right!=this)
{
this->Maclass::~CCSOUtilSurfaceECGBuffer();
::new(this) Maclass(right);
}
return *this;
}
question :
::new(this) Maclass(right); : je ne comprends pas le sens de cette
ligne et si c'est bien de faire comme sa?
moi j'aurai suggéré de faire une fonction commune qui sera appelée par
le constructeur de copie et l'opérateur = "pour la lisibilité"
"Christophe Lephay" wrote in message news:<bnll6o$srr$...
classe enveloppe { // ou enveloppe * lettre; selon... lettre * la_lettre; ...
};
classe lettre : public enveloppe { void do_something() { /* ... */ } ... };
Ce n'est pas comme ça que l'a décrit Coplien. Ce que tu décris là, j'aurais appelé un simple handle. Ce qui caractèrise l'enveloppe-lettre chez Coplien, c'est que le handle est aussi la classe de base de l'hiérarchie :
Oui, j'ai mis l'original en commentaire. C'est toujours enveloppe-lettre à mes yeux dans la mesure où j'ai fait hérité lettre d'enveloppe...
Chris
kanze@gabi-soft.fr wrote:
"Christophe Lephay" <christophe-lephay@wanadoo.fr> wrote in message
news:<bnll6o$srr$1@news-reader2.wanadoo.fr>...
classe enveloppe
{
// ou enveloppe * lettre; selon...
lettre * la_lettre;
...
};
classe lettre : public enveloppe
{
void do_something() { /* ... */ }
...
};
Ce n'est pas comme ça que l'a décrit Coplien. Ce que tu décris là,
j'aurais appelé un simple handle. Ce qui caractèrise
l'enveloppe-lettre chez Coplien, c'est que le handle est aussi la
classe de base de l'hiérarchie :
Oui, j'ai mis l'original en commentaire. C'est toujours enveloppe-lettre à
mes yeux dans la mesure où j'ai fait hérité lettre d'enveloppe...
"Christophe Lephay" wrote in message news:<bnll6o$srr$...
classe enveloppe { // ou enveloppe * lettre; selon... lettre * la_lettre; ...
};
classe lettre : public enveloppe { void do_something() { /* ... */ } ... };
Ce n'est pas comme ça que l'a décrit Coplien. Ce que tu décris là, j'aurais appelé un simple handle. Ce qui caractèrise l'enveloppe-lettre chez Coplien, c'est que le handle est aussi la classe de base de l'hiérarchie :
Oui, j'ai mis l'original en commentaire. C'est toujours enveloppe-lettre à mes yeux dans la mesure où j'ai fait hérité lettre d'enveloppe...
Chris
Christophe Lephay
wrote:
Disons les choses par leur nom :
Proxy : C'est une classe qui agissent à la place d'une autre. C'est décrit, si mes souvenirs sont bons, dans un des Scott Meyers, ainsi que dans les Design Patterns. Une utilisation typique, c'est de distinguer les lectures des écritures dans une classe collection : l'opérateur [] renvoie une instance du proxy, qui a un opérateur de conversion pour les utilisations rvalue, et un opérateur d'affectation qui appelle une fonction de la collection pour faire la modification. (C'est un des rares cas où on pourrait avoir un opérateur d'affectation const.)
Pare-feu de compilation : Aussi connu sur le nom du chat de Chesire, ou l'idiome de pimpl, c'est un idiome très ancien qui a fortement été conseillé par John Lakos, et depuis largement décrit par Herb Sutter. En gros, il consiste en la mise des parties traditionnellement privées dans une classe à part, avec le but unique de limiter les dépendences à la compilation -- d'une part, on n'a plus besoin d'inclure les en-têtes des parties données dans l'en-tête exposé de la classe, et de l'autre, une modification des parties privées ne déclenche pas la récompilation de tout le mode. Son utilisation s'impose dans de gros projets.
Handle : C'est ce que semble vouloir décrire Christophe. Un handle, c'est une classe qui contient un pointeur à une classe de base d'une hiérarchie, et dont toutes les fonctions renvoient à cette hiérarchie. Le but, la plupart du temps, c'est effectivement d'avoir à la fois le polymorphisme et une sémantique de valeur. (L'opérateur d'affectation peut effectuer une copie profond, au moyen d'une fonction clone, ou se servir d'un comptage de références.)
Enveloppe-lettre : C'est en fait un Handle dont la classe handle est aussi la classe de base de l'hiérarchie, voir Coplien.
Bonne synthèse, exhaustive :)
Chris
kanze@gabi-soft.fr wrote:
Disons les choses par leur nom :
Proxy :
C'est une classe qui agissent à la place d'une autre. C'est
décrit, si mes souvenirs sont bons, dans un des Scott Meyers,
ainsi que dans les Design Patterns. Une utilisation typique,
c'est de distinguer les lectures des écritures dans une classe
collection : l'opérateur [] renvoie une instance du proxy, qui a
un opérateur de conversion pour les utilisations rvalue, et un
opérateur d'affectation qui appelle une fonction de la collection
pour faire la modification. (C'est un des rares cas où on
pourrait avoir un opérateur d'affectation const.)
Pare-feu de compilation :
Aussi connu sur le nom du chat de Chesire, ou l'idiome de pimpl,
c'est un idiome très ancien qui a fortement été conseillé par John
Lakos, et depuis largement décrit par Herb Sutter. En gros, il
consiste en la mise des parties traditionnellement privées dans une
classe à part, avec le but unique de limiter les dépendences à la
compilation -- d'une part, on n'a plus besoin d'inclure les en-têtes
des parties données dans l'en-tête exposé de la classe, et de
l'autre, une modification des parties privées ne déclenche pas la
récompilation de tout le mode. Son utilisation s'impose dans de gros
projets.
Handle :
C'est ce que semble vouloir décrire Christophe. Un handle, c'est une
classe qui contient un pointeur à une classe de base d'une
hiérarchie, et dont toutes les fonctions renvoient à cette
hiérarchie. Le but, la plupart du temps, c'est effectivement d'avoir
à la fois le polymorphisme et une sémantique de valeur. (L'opérateur
d'affectation peut effectuer une copie profond, au moyen d'une
fonction clone, ou se servir d'un comptage de références.)
Enveloppe-lettre :
C'est en fait un Handle dont la classe handle est aussi la classe de
base de l'hiérarchie, voir Coplien.
Proxy : C'est une classe qui agissent à la place d'une autre. C'est décrit, si mes souvenirs sont bons, dans un des Scott Meyers, ainsi que dans les Design Patterns. Une utilisation typique, c'est de distinguer les lectures des écritures dans une classe collection : l'opérateur [] renvoie une instance du proxy, qui a un opérateur de conversion pour les utilisations rvalue, et un opérateur d'affectation qui appelle une fonction de la collection pour faire la modification. (C'est un des rares cas où on pourrait avoir un opérateur d'affectation const.)
Pare-feu de compilation : Aussi connu sur le nom du chat de Chesire, ou l'idiome de pimpl, c'est un idiome très ancien qui a fortement été conseillé par John Lakos, et depuis largement décrit par Herb Sutter. En gros, il consiste en la mise des parties traditionnellement privées dans une classe à part, avec le but unique de limiter les dépendences à la compilation -- d'une part, on n'a plus besoin d'inclure les en-têtes des parties données dans l'en-tête exposé de la classe, et de l'autre, une modification des parties privées ne déclenche pas la récompilation de tout le mode. Son utilisation s'impose dans de gros projets.
Handle : C'est ce que semble vouloir décrire Christophe. Un handle, c'est une classe qui contient un pointeur à une classe de base d'une hiérarchie, et dont toutes les fonctions renvoient à cette hiérarchie. Le but, la plupart du temps, c'est effectivement d'avoir à la fois le polymorphisme et une sémantique de valeur. (L'opérateur d'affectation peut effectuer une copie profond, au moyen d'une fonction clone, ou se servir d'un comptage de références.)
Enveloppe-lettre : C'est en fait un Handle dont la classe handle est aussi la classe de base de l'hiérarchie, voir Coplien.
Bonne synthèse, exhaustive :)
Chris
Laurent DELEPINE
Christophe Lephay wrote:
Lu dans "Programmation avancée en C++" de Coplien...
Ca tombe bien, je cherchais justement un livre de C++ pour me perfectionner.
A+
LD
Christophe Lephay wrote:
Lu dans "Programmation avancée en C++" de Coplien...
Ca tombe bien, je cherchais justement un livre de C++ pour me perfectionner.