¿Son virtuales todas las funciones miembro de las clases abstractas?
En Java y C#, las clases abstractas utilizan la palabra clave abstract para indicar que una clase es abstracta y que no se pueden crear instancias de estas clases.
En C, no existe una palabra clave abstracta similar a Java o C#, y las clases que contienen funciones virtuales puras generalmente se denominan clases abstractas. Las funciones virtuales puras en C también son equivalentes a las funciones abstractas en Java y C#.
En otras palabras, Java, C# y C no restringen las clases abstractas solo a funciones abstractas.
En lo que respecta a C, una clase puede denominarse clase abstracta siempre que una función de la clase sea puramente virtual y no haya restricciones sobre si la clase tiene otros miembros. Volviendo a su pregunta, esto significa que una clase abstracta puede tener funciones virtuales o no virtuales, mientras que no es necesario que todas las funciones miembro sean virtuales.