2008-12-24 9 views

Répondre

4

Non. Il n'y a pas d'objet anonyme en C++. Il y a une chose telle que définir un objet au type A qui est immédiatement rejeté; ce que vous avez écrit est une expression qui retourne un objet A qui n'est jamais assigné à une variable, comme le code retour de printf n'est généralement jamais assigné ou utilisé.

Dans ce code, si cela fonctionnait, vous déclareriez "aucun objet" à allouer en dehors du tas. Comme il n'y a aucun objet à allouer, c'est inutile.

4

Vous pouvez créer une variable automatique "anonyme", mais pas une variable statique. Les éléments suivants créent un objet de classe A et appellent le constructeur, puis appellent le destructeur sur la fonction exit.

class A; 
void foo() 
{ 
    A(); 
} 

Vous pouvez obtenir un effet similaire en attribuant l'objet sur le tas ou dans un endroit constructing it in place préaffectées. Toutefois, dans les deux cas, l'objet ne peut pas être nettoyé correctement, car un pointeur n'est pas conservé pour un appel ultérieur à supprimer. Même si la mémoire statique sera libérée, le destructeur ne sera jamais appelé. Les objets anonymes ne font vraiment que depuis lorsqu'ils sont utilisés avec un éboueur.

3

D'une certaine manière, je pense que ce gars est après un effet secondaire de constructeur singleton.

De toute façon, donnez simplement un nom de variable à la chose.

+0

C'est exactement pourquoi je me retrouve à regarder cette question (7 ans plus tard). Je veux créer un objet qui a une portée globale mais je ne veux pas qu'il ait un nom. Il s'enregistre avec d'autres objets dans son constructeur, il n'a donc pas besoin de nom. –

0

Bien sûr il y a objets anonymes en C++! A(100) is anonymous object dans cet exemple

Cependant, si vous y pensez, cela n'a aucun sens de créer un objet anonyme statique.