Binding refers to classes and their member methods. A class that has no virtual methods can simply be bound to all its methods at compile time. This is known as static binding. However classes with virtual functions require special handling as they can be overridden by derived classes. If the derived class cannot be determined at compile time, then its overridden methods are dynamically bound at runtime, using the virtual table (or v-table) to determine which version of a method must be called.
Static binding occurs at compile time. Dynamic binding occurs at runtime.
C++ allows multiple inheritance while Java does not. In my opinion, multiple inheritance is not useful because it can get very confusing very quick. For polymorphism, C++ does early binding by default, while Java does late binding by default. Late binding is more useful than early binding.
Yes and no. Static vs dynamic binding is not a C or C++ language issue; it is a linker issue. If you link with a .lib file that contains stubs for run-time loading, then the called routine will not be loaded until it is invoked, and it will not be made a part of the load module.
There is no preference as such. The type of binding you use is more dependant upon the design and circumstance rather than any preference you may have. Static binding is certainly more predictable and therefore easier to program, but dynamic binding offers much greater flexibility.
1.Classes and Objects 2.Constructors and Destructors 3.Inheritance 4.Polymorphism 5.Dynamic Binding
Dynamic binding is certainly possible for normal C functions. Binding is a function of the binder (linker) and has nothing to do with the language itself.
b+b+b+c+c+c+c =3b+4c
c + c + 2c + c + c = 6c
b + b + b + c + c + c + c = 3b + 4c
Dynamic binding, or late binding, is when the object code for the class does not get loaded into memory until it is needed. This saves time at module load time, at the cost of delayed execution for the first invocation.
4c
c + c + c + c + c = 5 * c.