我在想关于C++的一些事情。
允许使用以下代码:
int bar;
class Foo
{
public:
Foo();
private:
int bar;
};在我的类中,this->bar和Foo::bar有什么区别吗?是否存在无效的情况?
发布于 2013-04-28 06:13:29
在Foo类中(具体地说),如果bar不是static,那么两者之间没有区别。
Foo::bar被称为成员bar的完全限定名称,在层次结构中可能有几种类型定义具有相同名称的成员的情况下,此表单非常有用。例如,您需要在此处编写Foo::bar:
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
}
};发布于 2013-04-28 06:14:24
他们和成员做同样的事情。
但是,您不能使用this->来区分类层次结构中同名的成员。您将需要使用ClassName::版本来执行此操作。
发布于 2013-04-28 06:06:50
根据我在C/C++中学到的知识,在某些东西上使用->主要用于指针对象,而使用::用于作为名称空间或超类的一部分的类,超类是您所包含的任何内容的通用类
https://stackoverflow.com/questions/16257315
复制相似问题