gpt4 book ai didi

c++ - 类成员在类定义中是否需要以 `class::`为前缀?

转载 作者:行者123 更新时间:2023-11-27 23:15:47 26 4
gpt4 key购买 nike

定义类时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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com