...de alguna forma los objetos "comparten las funciones", pero el encapsulamiento- como el termino lo indica, guardado, protegido-, se refiere mas para el caso de la 'corrupcion de los datos por otros objetos u otros metodos'.
Para explicarlo mejor vamos a un ejemplo.
Al definir clases con sus datos y metodos, los datos son modificables solamente por sus metodos-de esa clase-; es decir, ninguna otra clase tiene 'permiso' para hacer esas modificaciones-claro que las puede hacer via herencia y si declaras los atributos como protected o si es una clase friend o si declaras los atributos como globales, pero en lo maximo todo eso se trata de evitar. Ello se hace con el fin que los datos -de esa instancia- no sean corrompidos por otros objetos y eso evita el dolor de cabeza cuando vas a buscar bugs en tus programas y tambien permite crear programas menos confusos, mas entendibles y ordenados y mas faciles de extender.
El tema es un poco extenso, mas espero haber ayudado un poco. Te hice una explicacion bastante sencilla.
Busca aqui en la web algun tema relacionado con c++ y revisa lo concerniente a herencia, encapsulacion, objetos, clases, etc.
Alguna otra inquietud podemos tratar mas sobre el tema, es solo escribir.
saludos
manuel