Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion Taille de classe
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Alain Ketterlin  
View profile   Translate to Translated (View Original)
 More options Oct 5 2012, 4:08 pm
Newsgroups: fr.comp.lang.c++
From: Alain Ketterlin <al...@dpt-info.u-strasbg.fr>
Date: Fri, 05 Oct 2012 22:08:00 +0200
Subject: Re: Taille de classe

Benoit Izac <use.reply...@INVALID.ADDRESS> writes:
> le 04/10/2012 à 12:53, Lucas Levrel a écrit dans le message
> <alpine.LNX.2.00.1210041248230.3...@coulomb.univ-paris12.fr> :

>> Si une classe A contient un champ de type T, est-il garanti que
>> sizeof(A) sera un multiple entier de sizeof(T) ?

>> Par exemple, si je définis
>> class A {
>>   int un;
>>   double deux;
>> }
>> (ou double d'abord et int ensuite) et que je compile avec le
>> compilateur Intel, j'obtiens sizeof(A)==16 (sachant que sizeof(int)==4
>> et sizeof(double)==8). Est-ce imposé par la norme ? Est-ce un
>> comportement général des compilateurs courants ?

> Quel est l'intérêt de connaître la taille d'une classe ?

Tu veux sûrement dire la taille des instances ? Je ne pense pas que ce
soit la taille en soi qui intéresse Lucas, mais plutôt la fragmentation
induite par l'ordre et l'alignement des champs. Celui qui écrit :

struct s {
    int x
    double y;
    int z;

};

paye 24 octets pour 16 utiles (sur une configuration fréquente). Cela
peut vite s'accumuler si tu imbriques beaucoup. Par exemple, pour

struct t {
    s s1;
    s s2;

};

mon g++ 4.6.3 m'annonce 48 octets. Et si tu as beaucoup d'objets (dans
des tableaux/vecteurs par exemple), cela peut commencer à chiffrer. Ca
remplit la mémoire, les caches, etc.

> Quel est l'intérêt d'utiliser une classe sans méthode plutôt qu'une
> structure ?

Fournir un exemple minimal qui illustre son propos, j'imagine. Rien
d'autre, pas de panique, ce n'est manifestement pas du code de
production, de toute façon il manque le point-virgule.

-- Alain.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.