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

1 2 3 4 5
Avatar
Laurent Deniau
Bertrand Lenoir-Welter wrote:
Pour info, j'ai essayé la chose suivante (Borland C++ 5.02) :

class C1: public C0
{
public:
int i;
};

class C2: private C0
{
public:
int i;
};

class C3: public C0
{
private:
int i;
};

class C4: private C0
{
private:
int i;
};

sizeof(Cn) me renvoie la même taille (C0 + int) dans les 4 cas.

Je suis pas allé voir dans l'assembleur pour chercher d'éventuelles
différences, mais je parie une boîte de cassoulet qu'y'en a pas.


Parce que C1, C2, C3 et C4 ne sont pas polymorphique. S'ils le sont, le
layout ne changera probablement pas, mais le comportement de
dynamic_cast oui.

a+, ld.

Avatar
Stan
"Bertrand Lenoir-Welter" a écrit dans le message
de news: 4329481a$0$17240$
Si ma tante en avait...



Très constructif.

Je sais, c'est tordu ;-)


Me voilà rassuré. Etes-vous prêt à déclarer sur l'honneur que vous seriez
capable de coder un truc comme ça dans un programme sérieux ?



Comme l'indiquait le post, il s'agissait d'une reflexion :
le genre de curiosités intelletuelles qui sont plus annecdotiques
qu'utiles.

Vous me semblez un peu aigris.


--
-Stan


Avatar
Arnaud Meurgues
Stan wrote:

L'éxagération est une habitude chez toi.


exemples ?

--
Arnaud

Avatar
Stan
"Arnaud Meurgues" a écrit dans le
message de news: 432abc94$0$14568$
Stan wrote:

L'éxagération est une habitude chez toi.


exemples ?



Donc, il ne faut pas s'étonner si son comportement varie en fonction du
vent et de la pluie, non ?



A mon goût.

--
Arnaud



Avatar
Arnaud Meurgues
Stan wrote:

L'éxagération est une habitude chez toi.


exemples ?



Donc, il ne faut pas s'étonner si son comportement varie en fonction du
vent et de la pluie, non ?



A mon goût.


Pour que ce soit une habitude, il en faut d'autres, non ?

Mais là, en l'occurrence, c'était de l'humour et nullement de
l'exagération (n'importe qui était capable de voir que ce propos là
n'était pas technique).

Par ailleurs, la réponse que j'ai apporté avant ce trait était
techniquement justifiée, il me semble, sans exagération, il me semble
non plus.

Quant à l'humour, je vous promets de faire mon possible pour ne plus en
mettre une once dans mes réponses à vous destinées.
--
Arnaud



Avatar
Stan
"Arnaud Meurgues" a écrit dans le
message de news: 432ac23a$0$14558$
Stan wrote:

Pour que ce soit une habitude, il en faut d'autres, non ?



Exact :

La muflerie non plus.

Mais là, en l'occurrence, c'était de l'humour et nullement de
l'exagération (n'importe qui était capable de voir que ce propos là
n'était pas technique).


Suis-je bête, et moi qui croyais que le smiley etait encore d'usage sur
Usenet.
Et je ne vois pas en quoi un propos non technique doit être obligatoirement
assimilé à de l'humour; je m'en vais relire la charte.
Non je rigole, je ne vais pas le faire ;-)

Par ailleurs, la réponse que j'ai apporté avant ce trait était
techniquement justifiée, il me semble, sans exagération, il me semble
non plus.


Je n'ai pas remis en cause l'argument technique.

Quant à l'humour, je vous promets de faire mon possible pour ne plus en
mettre une once dans mes réponses à vous destinées.


Et maintenant, peut-on assimiler ça à une habitude ?
Mais j'apprécis que la communication ne soit pas définitivement rompue :-)

--
-Stan

Avatar
Bertrand Lenoir-Welter
Stan :

Comme l'indiquait le post, il s'agissait d'une reflexion :
le genre de curiosités intelletuelles qui sont plus annecdotiques
qu'utiles.


Adoncques vous présenté-je mes excuses. Le but n'était pas de vous vexer
et encore moins de vous injurier. Il y a des forums pour ça, que je ne
cautionne pas.

Il me semble avoir tout de même répondu sur le fond et avec des faits à
votre exemple que vous reconnaissiez vous-même comme tordu. Je ne sais
pas quoi dire de plus.


Vous me semblez un peu aigris.


Le mot me semble un peu fort. J'ai juste été piqué par le fait de me
faire traiter illico de trolleur parce que je tentais de donner un avis
qui n'est pas dans le Marbre Blanc Officiel. Les trolleurs, c'est
toujours les autres. Je ne dis pas ça pour vous.

Pour résumer, j'ai un assez gros programme que je code comme bon me
semble merci, qui tourne et se vend vaille que vaille, je dis pourquoi
je code comme ça, et chacun ses petites manies après tout : je me fais
traiter de profane. Je m'explique un peu plus : je deviens un profane
trolleur.

Finalement, c'est simple, la vie : il y a le catéchisme d'une part et
les trolleurs d'autre part. A choisir dans ce dilemme, je préfère être
un trolleur.


Bien à vous,

Avatar
Bertrand Lenoir-Welter
Laurent Deniau :

Parce que C1, C2, C3 et C4 ne sont pas polymorphique.



Je baisse les bras et me rends.

Avatar
Stan
"Bertrand Lenoir-Welter" a écrit dans le message
de news: 432ad5e1$0$27416$

[...]


Finalement, c'est simple, la vie : il y a le catéchisme d'une part et les
trolleurs d'autre part. A choisir dans ce dilemme, je préfère être un
trolleur.

Vous ressentez juste le besoin de vous exprimer,

ça arrive parfois quand on reste trop longtemps plongé dans le
code.

--
-Stan

Avatar
Bertrand Lenoir-Welter
Stan :

Vous ressentez juste le besoin de vous exprimer,
ça arrive parfois quand on reste trop longtemps plongé dans le
code.


Tout développeur plongé dans le code subit une poussée de fièvre
proportionnelle à la taille du code déplacé.

1 2 3 4 5