Maison >développement back-end >C++ >Quelle est la différence entre les fonctions statiques C++ et les fonctions amies ?

Quelle est la différence entre les fonctions statiques C++ et les fonctions amies ?

WBOY
WBOYoriginal
2024-04-17 08:42:01607parcourir

Les fonctions statiques sont des méthodes de classe qui accèdent uniquement aux membres statiques et ne reçoivent pas ces pointeurs ; les fonctions amies n'appartiennent pas aux classes et peuvent accéder à tous les membres et recevoir ces pointeurs.

C++ 静态函数与友元函数有什么区别?

La différence entre les fonctions statiques et les fonctions amies en C++

Les fonctions statiques

  • appartiennent à une classe mais n'appartiennent à aucun objet spécifique, et peuvent également être appelées méthodes de classe.
  • Déclaré à l'aide du mot-clé static.
  • Seuls les membres statiques de la classe sont accessibles.
  • ne recevra pas le pointeur this.

Fonction Ami

  • n'appartient à aucune classe.
  • Utilisez la déclaration du mot-clé friend.
  • Ayez accès à tous les membres de la classe, y compris les membres privés.
  • peut recevoir ce pointeur.

Résumé du tableau

Caractéristiques Fonctions statiques Fonctions amis
Adhésion à une classe Oui Non
Accès Classe statique membres Tous les membres de la classe
ce pointeur ne reçoit pas peuvent recevoir
méthode de déclaration statiquemots-clés amimots-clés

Cas de combat réel

Exemple de fonction statique : Calculer l'aire d'un cercle

class Circle {
public:
    static double calculateArea(double radius) {
        return 3.14 * radius * radius;
    }
};

int main() {
    double radius = 5.0;
    double area = Circle::calculateArea(radius);
    cout << "圆的面积:" << area << endl;
    return 0;
}

Exemple de fonction ami : Imprimer la valeur d'un membre privé

class Student {
private:
    int age;

public:
    friend void printAge(Student& student);
};

void printAge(Student& student) {
    cout << "年龄:" << student.age << endl;
}

int main() {
    Student student;
    student.age = 20;
    printAge(student);
    return 0;
}

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!

Déclaration:
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