Si, es est?tica, se me olvid? declararla. :blush:
Lo has entendido al rev?s

no vamos a tener m?s de una instancia de CAudio, sino s?lamente una.
Por ejemplo, si el constructor de CAudio fuera p?blico podr?as hacer esto;
CAudio objeto1, objeto2;
y tendr?as dos instnacias de CAudio, y no queremos eso.
El m?todo est?tico CAudio::Instance() lo impide.
Es la ?nica manera de crear un objeto CAudio, ya que sus constructores son privados. Y dentro de CAudio::Instance() comprobamos si un objeto CAudio ha sido creado anteriormente, si es cierto devolvemos un puntero a ese objeto, y si no lo creamos antes de devolver el puntero.
Resumiendo, al llamar Instance por primera vez creamos el objeto y retornamos un puntero a ?l. Al llamarlo sucesivas veces retornamos el puntero a dicho objeto ya creado.
Esto se puede hacer por que CAudio::Instance() es un
m?todo est?tico, los cuales tienen dos particularidades:
[li] No tienen puntero
this impl?cito. (Si no sabeis lo que es eso da igual, no viene al caso)
[li] El m?todo existe siempre hayamos creado instancias de la clase o no; es decir,
podemos llamar al m?todo aunque no hayamos creado ning?n objeto de esa clase cosa que no podr?amos hacer con un m?todo normal.
Aqu? es donde est? la clave. Esta segunda opci?n es la que nos da la ventaja de llamar a CAudio::Instance() siempre que queramos y, ojo al dato,
desde d?nde queramos es decir, siempre que hagamos CAudio::Instance(), no importa desde qu? parte del c?digo, nos retornar? el puntero al ?nico objeto CAudio que podemos tener.
Es decir, tenemos resueltos dos problemas:
-Tener una ?nica instancia de un objeto que representa un subsistema
-Podemos acceder a la instancia del subsistema de forma global.
Espero que haya quedado un poco m?s claro, sino me lo decis que intentar? explicarme mejor