Domanda un po' vaga a mio avviso, a cui corrisponde una risposta molto, ma molto, grezza e vaga che farà inorridire gli esperti. Ti rispondo come risponderei in Java, ma da quel poco che capisco con C++ dovrebbe essere più o meno la stessa cosa.
Direi che ci sono concettualmente tre tipi di metodi (è una bestialità dirla così, ma secondo me la capisci meglio):
- I costruttori che si attivano automaticamente quando istanzi la classe, e potresti averne più di uno con parametri differenti: quando istanzi la classe si esegue il costruttore che c'azzecca meglio
- I metodi statici, che possono essere chiamati sempre e comunque anche senza istanziare la classe. Per assurdo potresti creare una classe di metodi statici a cui puoi attingere di volta in volta, ma ovviamente possono lavorare solo con i parametri che passi di volta in volta, oppure non avere i parametri e fare un'azione fissa (in queste condizioni non parlerei di programmazione ad oggetti vera e propria, sarebbe solo un altro modo di fare programmazione strutturata).
- i metodi dinamici che puoi richiamare solo dopo aver istanziato la classe e possono far riferimento a tutti gli oggetti dell'istanza