首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >this->field和Class::field之间的区别?

this->field和Class::field之间的区别?
EN

Stack Overflow用户
提问于 2013-04-28 06:03:01
回答 4查看 380关注 0票数 11

我在想关于C++的一些事情。

允许使用以下代码:

代码语言:javascript
复制
int bar;
class Foo
{
public:
    Foo();
private:
    int bar;
};

在我的类中,this->barFoo::bar有什么区别吗?是否存在无效的情况?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-28 06:13:29

Foo类中(具体地说),如果bar不是static,那么两者之间没有区别。

Foo::bar被称为成员bar的完全限定名称,在层次结构中可能有几种类型定义具有相同名称的成员的情况下,此表单非常有用。例如,您需要在此处编写Foo::bar

代码语言:javascript
复制
class Foo
{
  public: Foo();
  protected: int bar;
};

class Baz : public Foo
{
  public: Baz();
  protected: int bar;

  void Test()
  {
      this->bar = 0; // Baz::bar
      Foo::bar = 0; // the only way to refer to Foo::bar
  }
};
票数 12
EN

Stack Overflow用户

发布于 2013-04-28 06:14:24

他们和成员做同样的事情。

但是,您不能使用this->来区分类层次结构中同名的成员。您将需要使用ClassName::版本来执行此操作。

票数 4
EN

Stack Overflow用户

发布于 2013-04-28 06:06:50

根据我在C/C++中学到的知识,在某些东西上使用->主要用于指针对象,而使用::用于作为名称空间或超类的一部分的类,超类是您所包含的任何内容的通用类

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16257315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档