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

C ++の矢印演算子`->`とは何ですか?


ドットと矢印の演算子はどちらもC++で使用され、クラスまたは構造体のメンバーにアクセスします。これらはさまざまなシナリオで使用されます。 C ++では、class、struct、またはunionとして宣言された型は、「クラス型」と見なされます。したがって、以下は3つすべてを指します。

  • a.bは、bがオブジェクトのメンバー(またはオブジェクトへの参照)である場合にのみ使用されます。したがって、a.bの場合、willは常にクラスの実際のオブジェクト(またはオブジェクトへの参照)になります。

  • a-> bは、基本的に(* a).bの省略表記です。つまり、aがオブジェクトへのポインタである場合、a->bisはポイントするオブジェクトのプロパティbにアクセスします。

dotはオーバーロードできませんが、->オーバーロードできるので、この演算子を使用するときに呼び出す必要がある独自の関数(operator->())を定義できます。したがって、aがoperator->をオーバーロードするクラスのオブジェクトである場合(一般的なそのようなタイプはスマートポインターとイテレーターです)、その意味はクラスデザイナーが実装したものです。

参照は、意味的にはオブジェクトへのエイリアスであるため、「またはポインタへの参照」も追加する必要があります。ただし、ポインタ(T *&)への参照が使用されることはめったにないため、これは役立つというよりも混乱を招くと思いました。

サンプルコード

#include<iostream>
class A {
   public: int b;
   A() { b = 5; }
};
int main() {
   A a = A();
   A* x = &a;
   std::cout << "a.b = " << a.b << "\n";
   std::cout << "x->b = " << x->b << "\n";
   return 0;
}

出力

5
5

  1. C ++のsizeof演算子とは何ですか?

    sizeofはキーワードですが、変数またはデータ型のサイズをバイト単位で決定するコンパイル時の演算子です。 sizeof演算子を使用して、クラス、構造体、共用体、およびその他のユーザー定義のデータ型のサイズを取得できます。 sizeofを使用する構文は次のとおりです- sizeof (data type) ここで、データ型は、クラス、構造体、共用体、およびその他のユーザー定義のデータ型を含む、目的のデータ型です。 sizeof演算子をchar型のオブジェクトに適用すると、1が得られます。sizeof演算子を配列に適用すると、配列IDで表されるポインターのサイズではなく、その配列の合計バイト数が

  2. C ++のアクセス修飾子とは何ですか?

    データの非表示は、オブジェクト指向プログラミングの重要な機能の1つであり、プログラムの機能がクラス型の内部表現に直接アクセスするのを防ぐことができます。クラスメンバーへのアクセス制限は、ラベル付けされたアクセス修飾子(クラス本体内のパブリック、プライベート、および保護されたセクション)によって指定されます。 メンバーとクラスのデフォルトのアクセスはプライベートです class Base {    public:       // public members go here       protected: &n