The following example illustrates the implementation and use of initializers and destructors from the C++ bindings. The first part shows the IDL for three classes with initializers. For variety, some of the classes use callstyle OIDL and others use callstyle IDL.
#include <somobj.idl> interface A : SOMObject { readonly attribute long a; implementation { releaseorder: _get_a; functionprefix = A; somDefaultInit: override, init; somDestruct: override; somPrintSelf: override; }; }; (null) interface B : SOMObject { readonly attribute long b; void BwithInitialValue(inout somInitCtrl ctrl, in long initialValue); implementation { callstyle = oidl; releaseorder: _get_b, BwithInitialValue; functionprefix = B; BwithInitialValue: init; somDefaultInit: override, init; somDestruct: override; somPrintSelf: override; }; }; (null) interface C : A, B { readonly attribute long c; void CwithInitialValue(inout somInitCtrl ctrl, in long initialValue); void CwithInitialString(inout somInitCtrl ctrl, in string initialString); implementation { releaseorder: _get_c, CwithInitialString, CwithInitialValue; functionprefix = C; CwithInitialString: init; CwithInitialValue: init; somDefaultInit: override; somDestruct: override; somPrintSelf: override; }; };