Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez aussi afficher la version anglaise dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte.
Traduction
Anglais
Nous recommandons d’utiliser Visual Studio 2017

Masquage des noms de classes

Vous pouvez masquer les noms de classe en déclarant une fonction, un objet, une variable ou un énumérateur dans la même portée. Toutefois, le nom de classe peut toujours être accessible lorsqu'il est précédé du mot clé classe.

// hiding_class_names.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

// Declare class Account at file scope.
class Account
{
public:
    Account( double InitialBalance )
        { balance = InitialBalance; }
    double GetBalance()
        { return balance; }
private:
    double balance;
};

double Account = 15.37;            // Hides class name Account

int main()
{
    class Account Checking( Account ); // Qualifies Account as 
                                       //  class name

    cout << "Opening account with balance of: "
         << Checking.GetBalance() << "\n";
}

Opening account with balance of: 15.37
RemarqueRemarque

À chaque fois que le nom de classe (Account) est appelé, la classe de mots clés doit être utilisée pour le différencier du compte de variable avec portée de fichier. Cette règle ne s'applique pas lorsque le nom de classe apparaît à gauche de l'opérateur de résolution de portée (::). Les noms à gauche de l'opérateur de résolution de portée sont toujours considérés comme des noms de classe.

L'exemple suivant montre comment déclarer un pointeur vers un objet de type Account avec le mot clé class :

class Account *Checking = new class Account( Account );

L'initialiseur Account (entre parenthèses) dans l'instruction précédente a une portée de fichier ; elle est de type double.

RemarqueRemarque

La réutilisation des noms d'identificateur, comme l'indique cet exemple, est considérée comme un style de programmation médiocre.

Pour plus d'informations sur les pointeurs, consultez Types dérivés. Pour plus d'informations sur la déclaration et l'initialisation des objets de classe, consultez Classes, structures et unions. Pour plus d'informations sur l'utilisation des opérateurs de magasin gratuit new et delete, consultez Fonctions membres spéciales.

Afficher: