OVH Cloud OVH Cloud

supression d'un private...

58 réponses
Avatar
Stan
Une reflexion à propos de la question posée précédemment sur
l'incidence de la supression d'un private dans un source.

La question d'origine était : Est-ce que le fait de supprimer
un ou plusieurs "private" peut modifier le comportement du programme ?

Dans le cas en question, sans doute pas, mais il est des cas...
Par exemple en modifiant le type d"héritage.

La plupart des compilateurs utilisent l'EBO ( Empty Base Optimization ), et
il
s'avère que dans le cas d'un héritage privé d'une classe vide :
class Nutshell { };
, l'EBO peut s'effectuer. Donc, dans la pratique, la taille du code généré
peut varier
selon le type d'héritage ( ...d'une classe vide ).

En résumé,
class A : private Nutshell
{
private:
int Value;
};

peut avoir une taille différente de :
class A : public Nutshell
{
private:
int Value;
};

Si le code effectue des tests sur la taille de la classe :
if( sizeof( A ) > otherclass ) ... //
cela peut modifier le comportement du programme à l'execution !

Je sais, c'est tordu ;-)
Et d'ailleurs, mon raisonnement est-il correct ?

--
-Stan

10 réponses

2 3 4 5 6
Avatar
Fabien LE LEZ
On Fri, 16 Sep 2005 11:06:14 +0200, Bertrand Lenoir-Welter
:

(Borland C++ 5.02)


<HS> Wow... Je croyais être le dernier à utiliser ce compilo. Nous
sommes deux !

Avatar
Bertrand Lenoir-Welter
Fabien LE LEZ :

<HS> Wow... Je croyais être le dernier à utiliser ce compilo. Nous
sommes deux !


1.5 : je l'utilise qu'à mi-temps.

Ah, OWL...

Avatar
Gabriel Dos Reis
"Stan" ( remove the dots )> writes:

| "Gabriel Dos Reis" a écrit dans le message de
| news:
| > | > Est-ce la seule marque d'humour légale sur Usenet ?
| > | >
| > | A défaut de voir le visage du locuteur et d'entendre
| > | l'intonation de sa voix, difficile de juger...
| >
| > Mais ce ne sont pas les seules marques d'humour.
| >
| Comme par exemple... ?

Celle que tu as loupée.

-- Gaby
Avatar
Gabriel Dos Reis
"Stan" ( remove the dots )> writes:

| "Bertrand Lenoir-Welter" a écrit dans le message
| de news: 432aeb60$0$1008$
| > Stan :
| >
| >> A défaut de voir le visage du locuteur et d'entendre
| >> l'intonation de sa voix, difficile de juger...
| >
| > Homère, Shakespeare et Hugo ont tout de même réussi à s'en passer.
|
| Bien sur, mais il y a le contexte;

justement !

-- Gaby
Avatar
Fabien LE LEZ
On Fri, 16 Sep 2005 20:15:28 +0200, Bertrand Lenoir-Welter
:

<HS> Wow... Je croyais être le dernier à utiliser ce compilo. Nous
sommes deux !


1.5 : je l'utilise qu'à mi-temps.

Ah, OWL...


Yep... Impossible à compiler avec gcc 3.4 (et en prime gcc est
affreusement lent) :-(

Ça fait quelques temps que j'essaie de trouver un remplaçant crédible
à BC++ 5.02, ne serait-ce que pour pouvoir utiliser Boost, mais
j'avoue que je patauge.


Avatar
Bertrand Lenoir-Welter
Fabien LE LEZ :

Ça fait quelques temps que j'essaie de trouver un remplaçant crédible
à BC++ 5.02, ne serait-ce que pour pouvoir utiliser Boost, mais
j'avoue que je patauge.



Y'en a pas. Le monde s'est arrêté en 1997. Faut faire comme tout le
monde et passer à Visual Studio, point-net ou point-barre. Je m'y
résouds lentement, après avoir acheté l'hiver dernier C++ Builder 6 Pro
toutes options, Kylix, Mobile Pro, Enterprise Server, vitres
électriques, clim et tout le tintouin, et que j'ai même pas daigné
installer (toujours dans son carton, et il est parti pour y rester).
Avec une grande nostalgie de ce truc simple et bien fichu qu'était OWL.
Un peu moins de nostalgie tout de même pour les bugs de BC++ 5.02 et ses
trop nombreux plantages quand il manipule de gros projets. Très très
lassant de ce côté. Et puis compiler en 2005 avec un compilo de 1997, ça
le fait pas trop dans ce monde de brutes.

Avatar
Arnaud Meurgues
Bertrand Lenoir-Welter wrote:

Gardes ! Enfermez-le au sous-sol.


Ce sous-sol, je suppose qu'il est protégé ?


C'est un sous-sol privé.

--
Arnaud


Avatar
Arnaud Meurgues
Bertrand Lenoir-Welter wrote:

Ça fait quelques temps que j'essaie de trouver un remplaçant crédible
à BC++ 5.02, ne serait-ce que pour pouvoir utiliser Boost, mais
j'avoue que je patauge.


Y'en a pas. Le monde s'est arrêté en 1997. Faut faire comme tout le
monde et passer à Visual Studio, point-net ou point-barre.


Comeau, c'est pas bien ?

C'est bizarre, je n'ai jamais entendu parler de quelqu'un qui s'en
servait en production. Pourtant, je suppose qu'ils en vendent.

--
Arnaud


Avatar
Fabien LE LEZ
On Fri, 16 Sep 2005 22:47:45 +0200, Bertrand Lenoir-Welter
:

Ça fait quelques temps que j'essaie de trouver un remplaçant crédible
à BC++ 5.02


Y'en a pas.


Pas chez Borland, ça c'est sûr. Je n'ai pas bien compris s'ils se sont
sabordés eux-même ou si Microsoft les a aidés, mais en tout cas, ça a
été fait proprement.
Dev-C++ a l'air sympa, mais un peu léger, et effroyablement lent.

Faut faire comme tout le
monde et passer à Visual Studio, point-net ou point-barre.


J'y pense sérieusement. En fait je suis en train d'essayer d'utiliser
OWL avec, car j'ai un logiciel, sur lequel j'ai travaillé 5 ans (et
c'est pas fini !), qui est basée dessus.
Je vais essayer de transformer ça en wxWidgets un de ces jours (la
structure est à peu près la même, donc ça doit être possible), mais
c'est pas pour cette année.

Je m'y
résouds lentement, après avoir acheté l'hiver dernier C++ Builder 6 Pro
toutes options


J'ai tenté BuilderX. Je n'ai toujours pas trouvé le moyen de taper

for (;;)
{
xxx

Et tant que je n'y arriverai pas, je considérerai ne pas pouvoir
écrire plus d'une ligne de code avec -- autant utiliser le bloc-notes
de Windows et gcc en ligne de commande, c'est mieux et moins cher.

Avec une grande nostalgie de ce truc simple et bien fichu qu'était OWL.


Le développement est toujours plus ou moins en cours, mais ça patauge
un peu. Et c'est pas compatible gcc 3.4.
Reste wxWidgets qui, comme je l'ai dit, est assez proche.

Un peu moins de nostalgie tout de même pour les bugs de BC++ 5.02 et ses
trop nombreux plantages quand il manipule de gros projets.


Je n'ai pas eu trop de problèmes de ce côté -- à part les difficultés
à linker quand l'option "Use incremental linker" est cochée.

Et puis compiler en 2005 avec un compilo de 1997, ça
le fait pas trop dans ce monde de brutes


Ben vi, y'a même pas moyen de faire une fonction membre template :-(


Avatar
Fabien LE LEZ
On Fri, 16 Sep 2005 23:08:27 +0200, Arnaud Meurgues
:

Comeau, c'est pas bien ?


Il me semble que c'est uniquement un compilo (+ un linker), non ?

Des compilateurs corrects, il y en a pas mal (y compris chez Borland).
Ce qui manque, c'est un IDE sérieux pour mettre autour.

2 3 4 5 6