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?