Maison > développement back-end > C++ > le corps du texte

Comment pouvez-vous utiliser des variables membres comme arguments par défaut dans les fonctions membres C ?

Patricia Arquette
Libérer: 2024-11-11 08:58:03
original
632 Les gens l'ont consulté

How Can You Use Member Variables as Default Arguments in C   Member Functions?

Utilisation de variables membres comme arguments par défaut en C

En C, vous pouvez rencontrer le besoin de rendre facultatifs les arguments des fonctions membres. Lorsqu'aucun argument n'est fourni, il serait préférable d'utiliser une variable membre par défaut.

Considérons l'exemple suivant :

class Object {
    ...
    void MoveTo(double speed, Point position);

protected:
    Point initPos;
    Point currPos;
};
Copier après la connexion

Le code tente d'attribuer la variable membre initPos comme valeur par défaut du paramètre position dans la fonction MoveTo :

void Object::MoveTo(double speed, Point position = initPos) {
    currPos = postion;
}
Copier après la connexion

Cependant, cette approche aboutit à une compilation error :

error: invalid use of non-static data member 'Object::initPos'
Copier après la connexion

Le problème est que les expressions d'argument par défaut pour les fonctions membres doivent s'appuyer uniquement sur des éléments de classe ou de portée globale. De plus, l'argument par défaut doit être défini dans la déclaration de la méthode dans le fichier d'en-tête.

Pour résoudre ce problème, deux surcharges de la méthode MoveTo peuvent être créées :

void Object::MoveTo(double speed) {
    MoveTo(speed, initPos);
}

void Object::MoveTo(double speed, Point position) {
    // Implementation here.
}
Copier après la connexion

La méthode MoveTo qui prend un seul argument appelle la méthode MoveTo avec deux arguments, en passant la valeur initPos par défaut.

Object object;
object.MoveTo(10.0); // Calls MoveTo(10.0, initPos)
Copier après la connexion

Cette approche adhère au principe DRY en permettant de définir l'implémentation de MoveTo une seule fois.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal