const*const - what is the purpose of this?

Lubos Lunak l.lunak at suse.cz
Thu Feb 23 05:16:37 PST 2012


On Thursday 23 of February 2012, Noel Grandin wrote:
> Hi
>
> I'm seeing declarations like this scattered around the SW module:
> e.g. in sw/inc/swtable.hxx at line 301
>
>    static SwTable * FindTable( SwFrmFmt const*const pFmt );
>
> As far as I can tell from my limited C++ knowledge, this is the same as
> the more common definition:
>
>    static SwTable * FindTable( const SwFrmFmt * pFmt );
>
> i.e. the second const serves no purpose - or am I missing something?

 The part to the left of the * is what the pointer points to, so it points to 
a const SwFrmFmt, and the placement of the const keyword there is irrelevant. 
The part to the right of the * is about the variable (=pointer) itself, so 
the const there means that the pointer cannot be changed to point elsewhere.

 Strictly technically speaking it would be better mark as const anything that 
is not intended to be changed, so the second const does serve a purpose and 
theoretically this form is actually the correct one, but in practice people 
do not bother with the second const for the convenience of less typing and 
easier reading.

-- 
 Lubos Lunak
 l.lunak at suse.cz


More information about the LibreOffice mailing list