Peut une classe déclarée statique en c++?
Est-ce légal en c++ (oui je sais c'est légal .net), et si oui, comment/pourquoi serait-il être utilisé?
static class foo{
public:
foo();
int doIt(int a);
};
"oui, je sais, c'est légal .net" n'est Pas vrai. En C++/CLI classes statiques sont déclarées comme
ref class MyClass abstract sealed
, pas static class MyClass
(C'est de la syntaxe C#).OriginalL'auteur | 2009-10-28
Vous devez vous connecter pour publier un commentaire.
Si vous êtes à l'aide de C++/CLI, la syntaxe pour
static
estvar f = Foo();
donnera l'estimation des erreurs "Ne peut pas déclarer une variable de type statique Toto" et "Impossible de créer une instance de la classe statique Toto", indiquant que le C# le considère comme un (C#) "statique" de la classe.OriginalL'auteur Ðаn
Non, ce n'est pas pris en charge en C++. La seule chose que l'
static
spécificateur de ne .NET est de vous forcer à faire de tous les membres de la classe statique; c'est juste une aide de mots clés. Écrire une classe statique en C++, tout ce que vous devez faire est de s'assurer que chaque membre de la classe est marquée commestatic
. (Edit: et un non-constructeur public, de sorte que votre "statique" de la classe ne peut pas être instanciée.)Ah, oui. Je savais que j'allais oublier quelque chose!
Normalement, ce serait dans un espace de noms.
Il ya des situations où vous en faire une classe. Pour l'utiliser comme une politique dans un modèle, par exemple.
Cette réponse est fausse. C#
static
mot-clé ajoute des métadonnées qui en font une classeabstract
etsealed
de sorte que même si vous faites référence à un assembly avec cette classe, vous ne pouvez pas instancier la classe ou en dérivent.OriginalL'auteur Adam Maras
L'équivalent le plus proche d'une classe statique en C++ est une classe avec seulement statique des variables membres. Ceci est connu comme la monostate modèle. Une telle classe signifie que toutes les instances de cette classe ont le même état. La syntaxe d'utilisation d'un monostate exemple est similaire à une classe normale (contrairement à une classe singleton), et en effet, un monostate classe peut être converti en une classe ordinaire, sans modification de ses usages. E. g.
OriginalL'auteur Phillip Ngan
La
static
touche de modification au niveau du fichier champ d'application en C++ indique que l'identificateur marquéstatic
n'est visible dans le fichier dans lequel elle est définie. Cette syntaxe n'est pas disponible dans les classes (seulement des méthodes et des variables), mais un effet similaire peut être obtenu pour les classes à l'aide d'un anonyme, un espace de noms:OriginalL'auteur Ken Bloom
Comme il est mentionné dans le fil de discussion suivant, C++ ne prend pas en charge une classe statique.
Si tu veux une classe sans constructeur public et uniquement les variables statiques, alors vous pouvez lire ce fil de discussion.
http://www.daniweb.com/forums/thread122285.html#
OriginalL'auteur James Black
Non,
static
est pour les objets et les fonctions.OriginalL'auteur DigitalRoss
Une classe ne peut pas être statique. Pour la classe statique dans d'autres langues, déclarer une classe avec seulement les membres statiques.
La
static
avant la déclaration de la classe attributs de l'objet construit, surtout utile pour les classes anonymes;Foo
, le nom de la classe ici, est facultative.OriginalL'auteur jdh8