C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

スコープ解決演算子とC++のこのポインターの違い


ここでは、いくつかのC ++の例を見て、どのタイプの出力が生成されるかを取得しようとします。次に、スコープ解決演算子とC++の「this」ポインターの目的と機能を理解できます。

一部のコードに「x」と言うメンバーがあり、同じ名前「x」の引数を取る別の関数を使用する場合、その関数で「x」を使用すると、メンバー変数が非表示になり、ローカル変数が使用されます。これを1つのコードで確認しましょう。

#include <iostream>
using namespace std;
class MyClass {
   private:
      int x;
   public:
      MyClass(int y) {
         x = y;
      }
   void myFunction(int x) {
      cout << "Value of x is: " << x;
   }
};
main() {
   MyClass ob1(10);
   ob1.myFunction(40);
}

出力

Value of x is: 40

クラスのxメンバーにアクセスするには、「this」ポインタを使用する必要があります。 「this」は、現在のオブジェクトを指す特殊なタイプのポインタです。 「this」ポインタがこのタスクの実行にどのように役立つかを見てみましょう。

#include <iostream>
using namespace std;
class MyClass {
   private:
      int x;
   public:
      MyClass(int y) {
         x = y;
      }
   void myFunction(int x) {
      cout << "Value of x is: " << this->x;
   }
};
main() {
   MyClass ob1(10);
   ob1.myFunction(40);
}

出力

Value of x is: 10

C ++には、スコープ解決演算子と呼ばれる別の演算子があります。その演算子は、親クラスのメンバーまたは一部の静的メンバーにアクセスするために使用されます。これにスコープ解決演算子を使用すると、機能しません。同様に、静的メンバーに「this」ポインタを使用すると、いくつかの問題が発生します。

#include <iostream>
using namespace std;
class MyClass {
   static int x;
   public:
      void myFunction(int x) {
         cout << "Value of x is: " << MyClass::x;
      }
};
int MyClass::x = 50;
main() {
   MyClass ob1;
   ob1.myFunction(40);
}

出力

Value of x is: 50

  1. C#のスコープ解決演算子とは何ですか?

    C#のスコープ解決演算子は、C++とは異なる意味を持っています。 C ++では::はグローバル変数に使用されますが、C#では名前空間に関連しています。 異なる名前空間で識別子を共有するタイプがある場合、それらを識別するには、スコープ解決演算子を使用します。 たとえば、System.Consoleクラスを参照するには、スコープ解決演算子でグローバル名前空間エイリアスを使用します。 global::System.Console 例 using myAlias = System.Collections; namespace Program {    class Demo {

  2. C#のスコープ解決演算子(::)はどこで使用しますか?

    C ++では、スコープ解決演算子、つまり::がグローバル変数に使用されますが、C#では名前空間に関連しています。 異なる名前空間で識別子を共有するタイプがある場合、それらを識別するには、スコープ解決演算子を使用します。 たとえば、System.Consoleクラスを参照するには、スコープ解決演算子-を指定してグローバル名前空間エイリアスを使用します。 global::System.Console 例を見てみましょう- 例 using myAlias = System.Collections; namespace Program {    class Demo { &