Dot (.) vs Arrow (->) to access data members in C++
By: Ivan Lim
Normally you can access data members and functions by using the dot (.) operator for Cat objects created locally. To access the Cat object on the free store, you must dereference the pointer and call the dot operator on the object pointed to by the pointer. Therefore, to access the GetAge member function, you would write
(*pRags).GetAge();
Parentheses are used to assure that pRags is dereferenced before GetAge() is accessed.
Because this is cumbersome, C++ provides a shorthand operator for indirect access: the points-to operator (->), which is created by typing the dash (-) immediately followed by the greater-than symbol (>). C++ treats this as a single symbol. Listing 8.6 demonstrates accessing member variables and functions of objects created on the free store.
Accessing member data of objects on the free store.
1: // 2: // Accessing data members of objects on the heap 3: 4: #include <iostream.h> 5: 6: class SimpleCat 7: { 8: public: 9: SimpleCat() {itsAge = 2; } 10: ~SimpleCat() {} 11: int GetAge() const { return itsAge; } 12: void SetAge(int age) { itsAge = age; } 13: private: 14: int itsAge; 15: }; 16: 17: int main() 18: { 19: SimpleCat * Frisky = new SimpleCat; 20: cout << "Frisky is " << Frisky->GetAge() << " years old\n"; 21: Frisky->SetAge(5); 22: cout << "Frisky is " << Frisky->GetAge() << " years old\n"; 23: delete Frisky; 24: return 0; 25: } Output: Frisky is 2 years old Frisky is 5 years old
Analysis: In line 19, a SimpleCat object is instantiated on the free store. The default constructor sets its age to 2, and the GetAge() method is called in line 20. Because this is a pointer, the indirection operator (->) is used to access the member data and functions. In line 21, the SetAge() method is called, and GetAge() is accessed again in line 22.
Archived Comments
1. KostyaExhat
View Tutorial By: KostyaExhat at 2017-05-08 20:49:17
2. Angelnew
View Tutorial By: Angelnew at 2017-05-08 11:49:18
3. Curtisbit
View Tutorial By: Curtisbit at 2017-05-03 01:46:36
4. TchekhovSma
View Tutorial By: TchekhovSma at 2017-04-29 22:49:00
5. i think i can use it in my project in IT.
PROGRAMMING......
View Tutorial By: jamesmae amado at 2013-11-17 13:42:58
6. Thanks a lot for this. Very concise and clear, and very helpful.
View Tutorial By: Peter at 2012-05-30 06:22:39
7. I have a sample code in which,
object.function_name()->another_function();
View Tutorial By: Tan Mi at 2011-10-25 23:24:10
8. Okay, this article cleared my two doubts i.e. Use of new keyword and that of arrow symbol in c++, wh
View Tutorial By: Shrikrishna Meena at 2010-09-26 12:38:04
9. Thanks this article helped (just needed to know what -> thingy was)
http:/
View Tutorial By: sushi at 2008-12-17 08:09:51
Comment on this tutorial
- Data Science
- Android
- AJAX
- ASP.net
- C
- C++
- C#
- Cocoa
- Cloud Computing
- HTML5
- Java
- Javascript
- JSF
- JSP
- J2ME
- Java Beans
- EJB
- JDBC
- Linux
- Mac OS X
- iPhone
- MySQL
- Office 365
- Perl
- PHP
- Python
- Ruby
- VB.net
- Hibernate
- Struts
- SAP
- Trends
- Tech Reviews
- WebServices
- XML
- Certification
- Interview
categories
Related Tutorials
Calculating total based on the given quantity and price in C++
Sorting an array of Strings in C++
Matrix using nested for loops in C++
Compute the square root of the sum of the squares of an array in C++
Calculate average using Two-Dimensional Array in C++
Two-Dimensional Array Manipulation in C++
Compiling and Linking Multiple Source Files in C++
Escape Sequences for Nonprintable Characters in C++
Using the Built-in Arithmetic Types in C++