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
Bertrand Lenoir-Welter
Fabien :

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


J'y pense sérieusement.



J'ai posé la question cet hiver dans fr.comp.os.ms-windows.programmation
après avoir acheté BCB-6 Pro et m'être demandé si c'était finalement le
bon choix.

Réponses unanimes : Borland C++ sous tous ses avatars est cliniquement
mort, et tout le monde est passé avec finalement peu de regrets à VC++
qui s'est très nettement amélioré ces derniers temps. C'est sûr, pour
faire du multi-plateforme, c'est un peu raté. Mais pour des projets
strictement Windows, plus personne ne lui arrive à la cheville. Même les
vieux accros de Borland sont passés à VC++. Seuls quelques afficionados
de CodeWarrior luttaient encore sans grande conviction.

Les gens qui ont suivi le même parcours que moi : Turbo-C 2.0 sous DOS,
puis Borland C++ 4 puis 5 puis 5.02 et se sont plus ou moins frottés à
Builder ont fini par baisser les bras et passer à Microsoft la mort dans
l'âme. Aucun ne semble l'avoir regretté. Pour ce qui me concerne, c'est
déjà décidé, j'attends juste VS-2005.


Avatar
Fabien LE LEZ
On Sat, 17 Sep 2005 08:36:46 +0200, Bertrand Lenoir-Welter
:

Réponses unanimes : Borland C++ sous tous ses avatars est cliniquement
mort,


C'est bien ce qu'il m'avait semblé. Il y a cinq ou six ans, j'ai reçu
une version complète de BCB. Quand j'ai vu le truc, j'ai vite
désinstallé et refermé le carton (il n'a pas bougé de l'étagère
depuis). J'espérais qu'ils amélioreraient le produit, mais
manifestement non.

et tout le monde est passé avec finalement peu de regrets à VC++
qui s'est très nettement amélioré ces derniers temps.


Ben... J'ai essayé de compiler mon application OWL avec Visual Studio
2003 et... "INTERNAL COMPILER ERROR" (ça a l'air d'un truc très très
fréquent, au vu de Google).

C'est sûr, pour
faire du multi-plateforme, c'est un peu raté.


Pas forcément. VC++ est un compilateur comme un autre -- du code
développé sous Visual Studio peut très bien compiler sous Linux ou
MacOSX, pour peu qu'on n'utilise que des bibliothèques portables
(wxWidgets ou QT).

Les gens qui ont suivi le même parcours que moi : Turbo-C 2.0 sous DOS,
puis Borland C++ 4 puis 5 puis 5.02 et se sont plus ou moins frottés à
Builder ont fini par baisser les bras et passer à Microsoft la mort dans
l'âme.


Idem, si jamais j'arrivais à le faire fonctionner.

Pour ce qui me concerne, c'est
déjà décidé, j'attends juste VS-2005.


Je crois que je vais faire pareil : vite désinstaller la version
"2003" que j'ai "empruntée", et voir si 2005 marche mieux.

Avatar
Stan
"Bertrand Lenoir-Welter" a écrit dans le message
de news: 432b2f1d$0$7827$
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.


La VCL n'est pas mieux conçue encore ?

--
-Stan


Avatar
Fabien LE LEZ
On Sat, 17 Sep 2005 12:37:48 +0200, "Stan" (
remove the dots )>:

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


La VCL n'est pas mieux conçue encore ?


Ben... euh... Hors-sujet ici, c'est pas du C++. J'en ai peu vu, mais
ça m'a l'air plein d'extensions propriétaires, ce machin.

Alors qu'OWL compile sous VC++ et (presque) sous gcc.

OWL est une bibliothèque graphique, VCL ressemble plus à une
passerelle entre un RAD et le langage C++.

Faudrait plutôt demander aux programmeurs Delphi d'en parler, vu que
VCL est au départ prévue pour eux.

Au fait, ça existe encore, VCL ?

PS : je suis en train de tester Visual C++ 2005 beta 2, et
effectivement, ça a l'air nettement plus fiable que VC++ 2003.


Avatar
Fabien LE LEZ
On Sat, 17 Sep 2005 12:45:31 +0200, Fabien LE LEZ
:

PS : je suis en train de tester Visual C++ 2005 beta 2, et
effectivement, ça a l'air nettement plus fiable que VC++ 2003.


Euh... Finalement non. Re-"internal compiler error". Tant pis, on
essaiera la version 2007...

Avatar
Stan
"Gabriel Dos Reis" a écrit dans le message de
news:
"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.



Iinitalement, oui, j'avoue n'avoir pas détecté humour qui se cachait
dans la remarque.

Dans ce cas, pour ne pas l'avoir fait remarqué aussitôt ( ça, ce n'est pas à
toi de me le dire )?
Car la suite du dialogue avait de quoi me faire douter :

Donc, il ne faut pas s'étonner si son comportement varie en fonction
du



vent et de la pluie, non ?
Exagérer n'a jamais rendu plus crédible.




La muflerie non plus.


A moins que ce ne soit aussi de l'humour.
Ce que je suspecte un peu, c'est que certains perdent
aussi leur humour quand on n'y a pas réagit convenablement...
Je te laisse réfléchir à cette hypothése ;-)

--
-Stan



Avatar
Bertrand Lenoir-Welter
Fabien :

OWL est une bibliothèque graphique


Plus que ça encore. OWL est l'encapsulation de l'essentiel de l'API
Windows en classes C++ joliment présentées. On y trouve des points
d'entrée qui n'ont rien de graphique.

Remarque, j'entends parler d'OWL-Next depuis des années, développée par
une bande d'irréductibles, mais je sais pas ce que ça donne. OWL
standard m'allait bien assez, et pour le reste, suffit de taper direct
dans l'API.

Avatar
Loïc Joly
On Sat, 17 Sep 2005 12:45:31 +0200, Fabien LE LEZ
:


PS : je suis en train de tester Visual C++ 2005 beta 2, et
effectivement, ça a l'air nettement plus fiable que VC++ 2003.



Euh... Finalement non. Re-"internal compiler error". Tant pis, on
essaiera la version 2007...


Tu as reporté le bout de code qui ne passe pas à la compilation à
Microsoft ? Après tout, c'est ça le but d'une bêta.

--
Loïc


Avatar
James Kanze
Arnaud Meurgues wrote:
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.


Pour commencer, c'est assez difficile de le faire passer par le
service achats -- il n'est pas assez cher.

Ensuite, il n'y a pas de débuggeur. Personnellement, je n'y vois
pas de grand inconvenient, mais d'autres...

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34



Avatar
Stan
"Fabien LE LEZ" a écrit dans le message de news:

On Sat, 17 Sep 2005 12:37:48 +0200, "Stan" (
remove the dots )>:

Au fait, ça existe encore, VCL ?



Oui, je crois.
Dans l'environnement Builder C++, l'un des inconvénients est le temps de
compilation qui assez long ( comparé à Delphi ).
Mais sinon, c'est assez bien conçu ( rien à voir avec les MFC ).
Reste qu'effectivement, ce n'est pas très portable.

--
-Stan

2 3 4 5 6