¿Cómo puedo declarar una función miembro virtual pura que es también const? Puedo hacer algo como esto?

virtual void print() = 0 const;

o como esta?

virtual const void print() = 0;
InformationsquelleAutor Chin | 2012-11-07

4 Comentarios

  1. 60

    De Microsoft Docs:

    Para declarar una constante, la función de miembro, coloque el const después de la palabra clave
    el paréntesis de cierre de la lista de argumentos.

    Por lo que debe ser:

    virtual void print() const = 0;
  2. 20

    Sólo el virtual void print() const = 0 forma es aceptable. Echa un vistazo a la especificación de gramática en C++03 §9/2:

    miembro-declarador de:

        sentencia declarativa pura-especificadoropción

        declarador de la constante de inicializadoropción

        identificadoropción : expresión constante

    puro-especificador:

        = 0

    La const es parte de la sentencia declarativa — es la cv-qualifier-ssopción en el directa-declarador de (§8/4):

    sentencia declarativa:

        directa-declarador de

        ptr-operador *sentencia declarativa*

    directa-declarador de:

        declarador-id

        directa-declarador de ( parámetro-declaración-cláusula ) cv-qualifier-ssopción excepción-especificaciónopción

        directa-declarador de [ constante de la expresiónopción ]

        ( sentencia declarativa )

    Por lo tanto, la = 0 debe venir después de la const.

    • Me quedo con esta respuesta, ya que se refiere a la de c++ especificación, en lugar de la de microsoft.

Dejar respuesta

Please enter your comment!
Please enter your name here