ctors和setter params的命名约定

7 c++ naming-conventions

对于那些为您命名成员变量但没有特殊符号的人,m_foo或者foo_如何为ctors和setter命名参数?

到目前为止我尝试过的一些选项......

Obj(int foo) : foo(foo) { }
void set_foo(int foo) { this->foo = foo; }

Obj(int _foo) : foo(_foo) { }
void set_foo(int _foo) { foo = _foo; }

Obj(int a_foo) : foo(a_foo) { } // a for "argument"
void set_foo(int a_foo) { foo = a_foo; }

Obj(int init_foo) : foo(init_foo) { }
void set_foo(int new_foo) { foo = new_foo; }
Run Code Online (Sandbox Code Playgroud)

vav*_*ava 9

我正在使用foo_,它比_foo更好,因为它不会与特定于实现的函数名称和关键字冲突.

  • 错误; 见标准中的17.4.3.1.2.单个下划线后跟大写字母是保留的,并且保留全局命名空间中以下划线开头的任何内容.我更喜欢记住一个简单的规则:不要使用下划线启动标识符. (3认同)

Joh*_*itb 6

我要去

Obj(int foo) : mFoo(foo) { }
void setFoo(int foo) { mFoo = foo; }
Run Code Online (Sandbox Code Playgroud)

在我的程序中.对于复制构造函数和operator =,我倾向于调用它

Obj(Obj const& that):mFoo(that.mFoo) { }
Run Code Online (Sandbox Code Playgroud)

对于运营商来说,我要去

Obj operator+(Obj const& lhs, Obj const& rhs) { ... }
Run Code Online (Sandbox Code Playgroud)

因为这些是 EFT ħ小号 IDE和- [R飞行ħ小号的它的IDE.


Yan*_*met 0

我总是使用 Param 或 Arg 后缀,但仅在需要消除歧义时才使用。

Obj(int fooArg) : foo(fooArg)
Run Code Online (Sandbox Code Playgroud)