C++中的成员vs方法参数访问

Ale*_*lex 3 c++ methods arguments class instance

我可以使用一个方法来接受与持有类成员相同名称的参数吗?我试着用这个:

    class Foo {
        public:
            int x, y;
            void set_values(int x, int y)
            {
                x = x;
                y = y;
            };
    };
Run Code Online (Sandbox Code Playgroud)

......但它似乎不起作用.

有没有办法访问我正在使用的命名空间的实例,类似于JavaScript this或Python self?

kdt*_*kdt 14

通过使用成员变量的命名约定来避免这种混淆通常是个好主意.例如,camelCaseWithUnderScore_很常见.这样你就会最终得到x_ = x;,这仍然有点大声朗读,但在屏幕上相当明确.

如果你绝对需要调用相同的变量和参数,那么你可以使用this指针来指定:

class Foo {
    public:
        int x, y;
        void set_values(int x, int y)
        {
            this->x = x;
            this->y = y;
        }
};
Run Code Online (Sandbox Code Playgroud)

顺便说一下,请注意类定义上的尾部分号 - 这是成功编译所需的.

  • 实际上,避免用_开始一个标识符 - 以_结束它很好并且很常见. (3认同)
  • @MartinYork:@Bojan Resnik是对的.另外,我认为用尾随_装饰成员变量是由Herb Sutter认可的. (2认同)

Mat*_*ttK 6

是的,您应该能够使用"this"关键字(这是C++中的指针)来编写它:

class Foo {
    public:
        int x, y;
        void set_values(int x, int y)
        {
            this->x = x;
            this->y = y;
        }
}
Run Code Online (Sandbox Code Playgroud)