Question

Lecture ce article de Wikipedia fait par l'un des répliquants à la question suivante:

C ++ constructeur de copie, de copie temporaires et sémantique

Je suis tombé sur cette ligne

  

En fonction du compilateur, et les paramètres du compilateur, le programme obtenu peut afficher l'une des sorties suivantes:

Ne est-ce qualifier pour un comportement non défini? Je sais que l'article dit Depending on the compiler and settings mais je veux juste effacer cela.

Était-ce utile?

La solution

Non, ce n'est pas un comportement non défini. comportement non défini a une définition spécifique dans la norme (la plupart du temps: «comportement, comme pourraient survenir lors de l'utilisation d'une construction de programme erroné ou des données erronées, pour lesquelles la présente Norme internationale impose aucune exigence ») Dans ce cas, le comportement est non précisé, mais pas non défini.

La différence est que toute exécution de quoi que ce soit avec un comportement non défini fait tout le comportement de votre programme non défini (à savoir tout peut arriver). Avec ce particulier un comportement non spécifié, seule une des deux choses peuvent se produire: soit le constructeur de copie exécute, ou ne pas

.

Autres conseils

Non. Le comportement est défini comme l'une des sorties sur la liste. un comportement non défini comprend des démons volant de votre nez.

Voir: nasal démons

comportement non défini est tout à fait différent de comportement défini la mise en œuvre , qui est ce qui est impliqué ici.

Cela dépend ce que vous entendez par indéfini. Je crois que les autres ont dit ici - par la définition des normes documentent utilisation. Mais je sais aussi que quand quelqu'un dit « ceci ou cela, je ne vous dis pas que » je pense comme un comportement non défini.

Il est pas une grosse affaire, mais, comme il ne doit jamais provoquer une erreur. Lorsque vous définissez certaines méthodes, vous êtes censé les définir selon les conventions particulières -. Il est une sorte de contrat implicite entre vous, le compilateur et les personnes qui utiliseront et maintenir votre code

Dans ce cas, si vous obtenez un etc-construction copie ou le comportement optimisé, l'effet devrait être le même - l'appelant reçoit la valeur désirée. Si votre constructeur de copie est l'impression « Bonjour tout le monde! » ou a d'autres effets secondaires inappropriés, il n'applique pas le comportement attendu pour un constructeur, de sorte que la faute est à vous pour rompre le contrat.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top