No language is "best". A language can be better for a particular application using a particular approach.
It is not really clear what your question is.
C++ is basically a superset of C which supports object-oriented programming (OOP). The object-oriented paradigm defines a class as having a state (data) and methods (functions). Objects are instantiated from the class, and other entities can interact with these objects. The advantage to this model is that the data and functionality are bound together and the data can be hidden from any external entities. The external entities interact strictly through the exposed methods, providing data encapsulation and abstraction. In this way objects have a kind of a contract with one another based on the exposed methods.
C is a low-level procedural language. In C, you have functions, and can build a program structure as a hierarchy of functions. The programming approach and structure is completely left to the programmer. It is possible to contrive a C structure where you encapsulate data and functions that works like OOP, but that's not the way C programmers typically to do it. The C language does not separate functions and data, but how and whether they are separated is a result of how the programmer structures the code.
Given that information, can you rephrase your question to be a little more specific?