Mik*_*ike 2 c++ instance-variables
我有一个这样定义的类:
class MyClass
{
int x;
public:
MyClass(int x);
};
MyClass::MyClass(int x)
{ //Assign x here
}
Run Code Online (Sandbox Code Playgroud)
但是,我无法x在构造函数中初始化,因为它与实例变量具有相同的名称.有没有办法绕过这个(除了更改参数的名称)?
Naa*_*aff 12
最好的选择是使用构造函数的初始化列表:
MyClass::MyClass(int x) : x( x ) { // Body }
Run Code Online (Sandbox Code Playgroud)
但你也可以尝试这种方法:
MyClass::MyClass(int x) { this->x = x; }
Run Code Online (Sandbox Code Playgroud)
但是,我无法在构造函数中初始化x,因为它与实例变量具有相同的名称.有没有办法绕过这个(除了更改参数的名称)?
所以改变参数的名称!
class MyClass
{
int x;
public:
MyClass(int xInitVal);
};
MyClass::MyClass(int xInitVal)
:x(xInitVal)
{ // Don't assign x here.
}
Run Code Online (Sandbox Code Playgroud)
通过使参数名称与本地相同,您只需使代码难以阅读.不要这样做.您遇到的几乎所有样式指南都会告诉您不要使参数与成员同名.请一点点常识.
<rant>致所有回答的人:
this->x = x;
Run Code Online (Sandbox Code Playgroud)
不要问我找工作.我的上帝,你正试图引起问题.
它看起来很可怕的事实并不是说这是一个坏主意.
是的,它在技术上是允许的,但重点是使代码易于阅读和维护,而不是尝试使其成为解码前一作者意图的异国艺术.
</咆哮>
| 归档时间: |
|
| 查看次数: |
3845 次 |
| 最近记录: |