Oui, les constructeurs des attributs sont appelés à la création de l'objet qui les contient. S'il n'y a pas de constructeur par défaut (c'est tout à fait possible, il suffit de créer toi-même une classe qui n'a pas de constructeur par défaut), alors il faudra que ton objet spécifie explicitement comment l'attribut doit être construit (tout mets ":" après le constructeur de l'objet parent, puis tu appelles les constructeurs des attributs à initialiser). Et si tu ne le fais pas, ça ne compilera tout simplement pas
Au passage, les POD (types "natifs") genre int, pointeurs & co acceptent tous un constructeur par défaut.