Pointers vs references for out and inout parameters

Simon Marchi simon.marchi@polymtl.ca
Mon May 21 00:20:00 GMT 2018


On 2018-03-06 09:47 AM, Simon Marchi wrote:
> When writing a function that modifies an object, we have two 
> possibility:
> 
> declaration: void do_something (object &obj);
> call: do_something (obj);
> 
> or
> 
> declaration: void do_something (object *obj);
> call: do_something (&obj);
> 
> I don't think we ever ruled on which we preferred, and sometimes it's 
> ambiguous during reviews which one we should use.  When reviewing one of 
> Tom's patches a while ago, I suggested he uses a reference instead of a 
> pointer.  His rationale for using a pointer was that it makes it more 
> obvious at the call site that the object is going to be modified.
> 
> The Google C++ style guide forbids non-const reference arguments, pretty 
> much for this reason [1], I think it makes sense.
> 
> I would suggest to add it to our C++ coding standards wiki page [2].
> 
> Any objection?
> 
> [1] 
> https://google.github.io/styleguide/cppguide.html#Reference_Arguments
> [2] 
> https://sourceware.org/gdb/wiki/Internals%20GDB-C-Coding-Standards#C.2B-.2B-_Usage
> 
> Simon
> 

I interpret the silence as an agreement :), so I have now done this.

https://sourceware.org/gdb/wiki/Internals%20GDB-C-Coding-Standards#Avoid_non-const_reference_parameters.2C_use_pointers_instead

Simon



More information about the Gdb-patches mailing list