c++ - What happens if you don't use "this" within a class? -
suppose have following class:
class foo{ public: int somenum; void calculation(int somenum); };
definition:
void foo::calculation(int somenum){ somenum = somenum; }
now in line somenum = somenum
, somenum being referred ? if do:
this->somenum = somenum
then second somenum ?
what naming style avoid problem ? example, in objective-c, 1 prefixes "_" before member variable name. (e.g.: _somenum);
inside member function parameter name hides identical class member names, in
void foo::calculation(int somenum){ somenum = somenum; }
both somenum
s referring parameter. it's self-assignment doesn't change this->somenum
.
in this->somenum = somenum;
, second somenum
refers function parameter. assigns value of function parameter somenum
class member somenum
.
common naming conventions include m
or m_
prefix or postfix _
class members. prefix underscore can problematic because c++ reserves names beginning underscore followed capital letter.
note member initializer lists in constructors special case:
foo(int somenum) : somenum(somenum) { somenum = somenum; } ^ ^ ^ ^ | | | | | ---------------------- | these 3 refer parameter 'somenum', | , not class member. | language requires name referring class member (or base class) , parameter called 'somenum' not considered.
Comments
Post a Comment