Maison >développement back-end >C++ >Comment définir correctement les membres de la classe Static Const Integer en C ?

Comment définir correctement les membres de la classe Static Const Integer en C ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-01 08:29:11556parcourir

How Do I Properly Define Static Const Integer Class Members in C  ?

Définition de membres entiers const statiques dans les définitions de classe : une exploration

C permet la déclaration de membres entiers const statiques dans les définitions de classe. Cependant, il est crucial de comprendre la distinction entre initialisation et définition dans ce contexte.

Dans l'exemple de code fourni :

class test
{
public:
    static const int N = 10;
};

La déclaration de N au sein de la classe l'initialise avec une valeur de 10. Toutefois, cela n’équivaut pas à une définition. Pour résoudre l’erreur de l’éditeur de liens rencontrée, une définition distincte de N est requise en dehors de la définition de classe. Ceci peut être réalisé grâce à une définition de portée d'espace de noms, telle que :

const int test::N = 10;

Alternativement, le mot-clé constexpr peut être utilisé à la fois pour déclarer et définir des membres entiers const statiques en une seule étape, éliminant ainsi le besoin d'un définition :

class test
{
public:
    static constexpr int N = 10;
};

Dans le cas où std::min est appelé, il attend les paramètres passés par référence. Comme N est déclaré comme un entier constant statique, il doit être défini pour satisfaire à l’exigence de référence. Commenter l'appel à std::min permet au code de se compiler car la définition de N n'est plus nécessaire, bien qu'il soit toujours référencé.

En résumé, alors que C permet l'initialisation de membres entiers const statiques au sein définitions de classe, une définition distincte est nécessaire pour référencer la valeur. Ceci peut être réalisé via une définition de portée d'espace de noms ou en utilisant le mot-clé constexpr.

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