2 minute read

Introduction

The arrow operator, also known as the “member selection operator,” is a shorthand way of accessing members of a struct or class through a pointer in C++. It is an important concept to understand when working with pointers and can greatly enhance our ability to work with memory and optimize our code.

Concept

When we have a pointer to an object of a class or struct, we can access its members using the arrow operator. It is a shorthand for dereferencing the pointer and then accessing the member. For example, consider the following struct:

struct Person {
    int age;
    std::string name;
};

We can access the members of a Person object using the arrow operator like this:

Person* p = new Person;
p->age = 25;
p->name = "John";

This is equivalent to:

(*p).age = 25;
(*p).name = "John";

It is important to note that the arrow operator can only be used with pointers and references to classes or structs. If we try to use it on a non-pointer variable, the code will not compile.

Examples

Here are some examples of how to use the arrow operator in different scenarios:

Accessing members of a struct

struct Point {
    int x;
    int y;
};

Point* p = new Point;
p->x = 10;
p->y = 20;
std::cout << "Point: (" << p->x << ", " << p->y << ")" << std::endl;

Output:

Point: (10, 20)

Accessing members of a class

class Rectangle {
public:
    int width;
    int height;
};

Rectangle* r = new Rectangle;
r->width = 5;
r->height = 10;
std::cout << "Rectangle: " << r->width << "x" << r->height << std::endl;

Output:

Rectangle: 5x10

Accessing members of a nested struct or class

struct ComplexNumber {
    double real;
    double imag;
};

class Matrix {
public:
    ComplexNumber elements[3][3];
};

Matrix* m = new Matrix;
m->elements[0][0].real = 1.0;
m->elements[0][0].imag = 2.0;
std::cout << "Matrix element [0][0]: " << m->elements[0][0].real << "+" << m->elements[0][0].imag << "i" << std::endl;

Output:

Matrix element [0][0]: 1+2i

Conclusion

In summary, the arrow operator, also known as the member selection operator, is a shorthand way of accessing members of a struct or class through a pointer in C++. It is a powerful tool that allows us to work with memory more efficiently and make our code more readable. It is important to note that it can only be used with pointers and references to classes or structs and trying to use it on a non-pointer variable will result in a compilation error. Understanding how to use the arrow operator is an essential part of mastering the C++ programming language.