At 06:21 AM 7/21/2008, Richard Dingwall wrote:
Not a prefix, but a a trailing
underscore suffix is generally used
(identifiers starting with an underscore are reserved for the
compiler).
class foo
{
public:
int bar() const { return bar_;
}
private:
int bar_;
};
According to various language references [1][2][3] the C++ specification
says
"Each name that contains a double
underscore _ _
or begins with an underscore followed
by an uppercase letter
(2.11
) is reserved to the implementation for any
use.
— Each name that begins with an underscore is reserved to the
implementation for use as a name in the global
namespace"
which means that member variables of the form "_bar" are
legal C++.
[1]
http://msdn.microsoft.com/en-us/library/565w213d.aspx
[2]
http://publib.boulder.ibm.com/infocenter/compbgpl/v9v111/index.jsp?topic=/com.ibm.xlcpp9.bg.doc/language_ref/ident.htm
[3]
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2691.pdf,
17.4.3.2.2