When you develop a DCE application, be it object oriented or otherwise, you begin by creating an interface definition file. This file specifies the operations (with necessary data structures) available for a client to call, all of which a server of this interface must implement.
Although IDL resembles the C programming language, it is intended to be language independent. This means that the applications that are developed could use any programming language that makes sense for them. However, the IDL compiler generates intermediate stub files in either C or C++, two of the most popular languages in use today. We use a particular programming language to take advantage of its features when developing an application. However, an application developed in another language could use mechanisms (such as wrapper routines) that call the routines generated by the IDL compiler.
The -lang option of the IDL compiler when used with a cxx argument generates C++ intermediate stub files rather than C intermediate stub files. In order to support the generation of C++ stubs, the IDL also needs additional features to give applications developed in C++ a cleaner and more efficient use of the distributed application features of DCE. This topic describes how to use these features in interface definitions.
More:
Specifying a C++ Class via an IDL Interface
IDL-Generated Classes as Part of Your Hierarchy