dot (.) operator in C++ (original) (raw)
Last Updated : 25 Sep, 2024
The **C++ **dot (.) operator is used for **direct member selection via the name of variables of type **class, struct, and union. It is also known as the direct member access operator. It is a binary operator that helps us to extract the value of the function associated with a particular object, structure, or union.
**Syntax:
variable_name.member;
- **variable_name: It's an instance of a class, structure, or union.
- **member: member variables or member functions associated with the created object, structure, or union.
**Example:
C++ `
// C++ Program to demonstrate the use of dot operator #include using namespace std;
class base { public: int var1;
base(int x) { var1 = x; }
void getValue()
{
cout << "Member Function Called" << endl;
}
};
// driver code int main() { // creating new object base b(222); // calling member function using dot(.) operator b.getValue(); // getting member variable cout << "Member Variable Value: " << b.var1; return 0; }
`
Output
Member Function Called Member Variable Value: 222
C++ `
// C++ Function // tO demonstrate // Indirect member selection operator void addXtoList(Node* node, int x) { // Node is a class
while (node != NULL) {
node->data = node->data + x;
node = node->next;
}
}
`
Can the dot (.) operator be overloaded?
No, the dot (.) operator cannot be overloaded in C++. Doing so will cause an error.
**Example:
C++ `
// C++ program // illustrate Overloading // .(dot) operator
#include ; using namespace std;
class cantover { public: void fun(); };
// assume that you can overload . operator // Class X below overloads the . operator class X {
cantover* p;
// Overloading the . operator
cantover& operator.() { return *p; }
void fun();
};
void g(X& x) {
// Now trying to access the fun() method
// using the . operator
// But this will throw an error
// as we have overloaded the . operator above
// Hence compiler won't allow doing so
x.fun();
}
`
**Output:
prog.cpp:11:20: error: expected type-specifier before '.' token
cantover& operator.()
^
prog.cpp:11:12: error: expected ';' at end of member declaration
cantover& operator.()
^
prog.cpp:11:20: error: expected unqualified-id before '.' token
cantover& operator.()
^
prog.cpp: In function 'void g(X&)':
prog.cpp:15:7: error: 'void X::fun()' is private
void fun();
^
prog.cpp:19:8: error: within this context
x.fun(); // X::fun or cantover::fun or error?
^