C++で何か疑問に思っています。
次のコードを認めます。
int bar;
class Foo
{
public:
Foo();
private:
int bar;
};
クラス内で と の間に違いはthis->bar
ありFoo::bar
ますか? 無効なケースはありますか?
C++で何か疑問に思っています。
次のコードを認めます。
int bar;
class Foo
{
public:
Foo();
private:
int bar;
};
クラス内で と の間に違いはthis->bar
ありFoo::bar
ますか? 無効なケースはありますか?
クラス内Foo
では (具体的には) is not という与えられた 2 つの間に違い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
}
};
彼らはメンバーと同じことをします。
this->
ただし、クラス階層で同じ名前のメンバーを区別するために使用することはできません。ClassName::
これを行うには、バージョンを使用する必要があります。
私がC/C++をいじって学んだことについては、何かに -> を使用することは主にポインターオブジェクト用であり、 :: を使用することは、名前空間の一部であるクラスまたは一般的なクラスであるスーパークラスに使用されますあなたが含めている