8.3. Accessing instance variables¶
You can read the values of an instance variable using the same syntax we used to write them:
int x = blank.x;
The expression blank.x means “go to the object named blank and
get the value of x.” In this case we assign that value to a local
variable named x. Notice that there is no conflict between the local
variable named x and the instance variable named x. The purpose of the
member access operator is to identify which variable you are referring to
unambiguously.
You can use the member access operator as part of any C++ expression, so the following are legal.
cout << blank.x << ", " << blank.y << endl;
double distance = sqrt(blank.x * blank.x + blank.y * blank.y);
In the active code below, we access the instance variables of point object
blank and output their values.
Next, we display the distance from the origin.
- ``string`` is the instance variable, ``cube`` is the object
- ``string`` is a data type.
- ``x`` is the instance variable, ``thing`` is the object
- ``x`` is the local variable.
- ``thing`` is the instance variable, ``cube`` is the object
- Consider the placement of ``thing`` -- it is before the ``.``
- ``cube`` is the instance variable, ``thing`` is the object
- Yes, we access the instance variable ``cube`` of the object ``thing`` using the dot operator.
Q-2: In string x = thing.cube;, what is the object and what is the instance variable we are reading the value of?
- 2.0 7.0 53
- Spaces need to be printed out like any other output.
- 2.07.053
- There are no spaces in the correct output.
- 7.0, 2.0 53
- The order in which the variables are printed out do not need to match the order in which they are declared.
- 7.02.053
- The order in which the variables are printed out do not need to match the order in which they are declared.
Q-3: What will print?
struct blue {
double x;
double y;
};
int main() {
blue blank;
blank.x = 7.0;
blank.y = 2.0;
cout << blank.y << blank.x;
double distance = blank.x * blank.x + blank.y * blank.y;
cout << distance << endl;
}
- int y = circle.x();
- No parentheses are needed.
- int circle = x.y;
- You should be assigning to the local variable x.
- int y = circle.x;
- You should be assigning to the local variable x.
- int x = circle.y;
- This is the correct way to assign the value of y to x.
Q-4: You want to go to the object named circle and get the value of y, then assign it to the local variable x. How would you do that?