Objets de type classe
Un objet est une zone de stockage typée de l'environnement d'exécution. En plus de conserver les informations d'état, il définit également le comportement. Les objets de type classe sont définis à l'aide de class-name. Prenons le fragment de code suivant :
// class_type_objects.cpp
class Account
{
public:
Account() // Default constructor
{
}
Account( double ); // Construct from double.
double& Deposit( double );
double& Withdraw( double, int );
};
int main()
{
Account CheckingAccount; // Define object of class type.
}
Le code précédent déclare une classe (un nouveau type) appelée Account. Il utilise ensuite ce nouveau type pour définir un objet appelé CheckingAccount.
Les opérations suivantes sont définies par C++ pour les objets de type de classe suivants :
Assignation. Un objet peut être assigné à un autre. Le comportement par défaut pour cette opération est une copie membre. Ce comportement peut être modifié en fournissant un opérateur d'assignation défini par l'utilisateur.
Initialisation à l'aide de constructeurs de copie.
Voici des exemples d'initialisation à l'aide de constructeurs de copie définis par l'utilisateur :
Initialisation explicite d'un objet. Par exemple :
Point myPoint = thatPoint;
déclare myPoint en tant qu'objet de type Point et l'initialise à la valeur de thatPoint.
Initialisation provoquée par le passage d'un élément sous forme d'argument. Les objets peuvent être passés aux fonctions par valeur ou par référence. S'ils sont passés par valeur, une copie de chaque objet est passée à la fonction. La méthode par défaut pour créer la copie est la copie membre. Cela peut être modifié en fournissant un constructeur de copie défini par l'utilisateur (un constructeur qui accepte un argument unique du type référence à la classe).
Initialisation provoquée par l'initialisation des valeurs de retour de fonctions. Les objets peuvent être retournés à partir des fonctions par valeur ou par référence. La méthode par défaut pour retourner un objet par valeur est une copie membre. Cela peut être modifié en fournissant un constructeur de copie défini par l'utilisateur. Un objet retourné par référence (à l'aide des types pointeur ou référence) ne doit pas être automatique et local par rapport à la fonction appelée. Dans ce cas, l'objet référencé par la valeur de retour est hors de portée avant d'être utilisé.
La rubrique Opérateurs surchargés explique comment redéfinir les autres opérateurs classe par classe.