"Mysooru" <na*******@yaho o.com> wrote in message
news:bf******** **@news.mch.sbs .de...
Hi All,
One of the ATL class.....
template <class Base>
class CComObject : public Base
{
public:
typedef Base _BaseClass;
CComObject(void * = NULL)
{
..............
}
:
:
};
Constructor takes parameter "void* = NULL",
how this unnamed parameter to the constructor is used
Thanks and Regards
HoRaNa
It's not. The parameter is there so that CComObject is compatible with other
classes such as CComPolyObject. Both CComObject, CComPolyObject and others
might be used as parameters to the template CComCreator which assumes that a
constructir which takes one parameter exists.
For instance
class A
{
public:
A(void* = 0) {} // unused parameter
};
class B
{
public:
B(void* p) : pp(p) {} // used parameter
private:
void* pp;
};
template <class T>
class C
{
public:
static T* create(void* p = 0) { return new T(p); }
};
int main()
{
A* a = C<A>::create() ;
B* b = C<B>::create("h ello");
}
C<A>::create would not compile unless A::A had a parameter even though it is
not used.
john