2011-03-29 13 views
7

Basado en http://en.wikipedia.org/wiki/Virtual_inheritance¿Debería escribir "público virtual" o "público virtual" en herencia virtual?

class Animal 
{ 
... 
}; 

// Two classes virtually inheriting Animal: 
class Mammal : public virtual Animal 
{ 
... 
}; 

también vi libros de uso la siguiente sintaxis,

class Mammal : virtual public Animal 
{ 
... 
}; 

Pregunta> ¿Qué es un estándar de C++?

Gracias

+0

FYI esto no es una herencia múltiple, esta es la herencia virtual por la que está preguntando. –

+0

@ Adam, deberíamos usar herencia virtual de la clase base cuando usamos herencia múltiple. – q0987

Respuesta

12

De ISO/IEC 14882: 2003 (E) - 10,1

Una lista de clases base se puede especificar en una definición de clase usando la notación:

base-clause: 
    : base-specifier-list 

base-specifier-list: 
    base-specifier 
    base-specifier-list , base-specifier 

base-specifier: 
    ::opt nested-name-specifieropt class-name 
    virtual access-specifier opt ::opt nested-name-specifieropt class-name 
    access-specifier virtual opt ::opt nested-name-specifieropt class-name 

access-specifier: 
    private 
    protected 
    public 

Tenga en cuenta que cualquiera de ellos se recomienda.

+0

Q> ¿Cuándo encontraste esto? - Gracias – q0987

+0

@ q0987 - Búsqueda de Google en el nombre estándar mencionado, debe poder encontrar uno :) – Mahesh

+1

esta es la gramática, pero ¿qué hay de la semántica, es decir, es el significado equivalente? –

3

Ambos son estándar. Utilice las convenciones de codificación locales que lo requieran.