定义类时cls
, 是否有必要(或良好做法)在类名前加上前缀 cls::
在 cls
中使用它们时给成员自己的定义,还是隐式完成的?例如
class cls {
int x;
void foo();
void bar();
}
void cls::foo() {
x++; // or use cls::x?
bar(); // or cls::bar()?
}
如果是这样,那么创建一个类 cls
自动意味着它也是一个命名空间(因为我认为 ::
运算符仅用于命名空间)?
编辑(跟进):
如果我们不使用 cls::
或 this->
,那么如果我的源也有一个变量 x
怎么办?课外?怎么会cls::foo()
知道是哪一个x++
指的是什么?
最佳答案
用类名显式限定成员变量的使用是个坏主意。最好的情况下,它是不必要的(或者在有必要的地方,this->member 更好)并且会抑制重构(如果重命名该类,可以更改更多地方),最坏的情况是它会引入错误,因为对虚函数的合格调用不会分派(dispatch)到重写版本.
关于c++ - 类成员在类定义中是否需要以 `class::`为前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16483041/