C ++ Как функции класса хранят значения закрытых членов и записывают их в массивы? - PullRequest
0 голосов
/ 25 сентября 2018

Я наткнулся на книгу C ++ в библиотеке и с тех пор следил за ней, пытаясь выполнять упражнения из этой книги.Одна вещь, которая смутила меня, была ответом на одно из упражнений, которые я ошибся.Я нуб, и мой вопрос: «Как функции класса работают при установке значений для массивов?».Если это не имеет никакого смысла, терпите меня.Пример, который я привожу ниже, является примером автора, а не моим.

#include <iostream>
using namespace std;

class Point {
private:            // Data members (private)
int x, y;
 public:              // Member functions
void set(int new_x, int new_y);
int get_x();
int get_y();
};

int main() {
Point array_of_points[7];

// Prompt user for x, y values of each point.

for(int i = 0; i < 7; ++i) {
    int x, y;
    cout << "For point #" << i << "..." << endl;
    cout << "Enter x coord: ";
    cin >> x;
    cout << "Enter y coord: ";
    cin >> y;
    array_of_points[i].set(x, y);         
}

// Print out values of each point.

for(int i = 0; i < 7; ++i) {
    cout << "Value of array_of_points[" << i << "]";
    cout << " is " << array_of_points[i].get_x() << ", ";
    cout << array_of_points[i].get_y() << "." << endl;
}

return 0;
}

void Point::set(int new_x, int new_y) {
if (new_x < 0)
    new_x *= -1;
if (new_y < 0)
    new_y *= -1;
x = new_x;
y = new_y;
}

int Point::get_x() {
return x;
}

int Point::get_y() {
return y;
}

Мой вопрос заключается в том, как функция void Point :: set класса Point, похоже, сохраняет значения переменных x и y в массиве.Меня это смущает, потому что он как будто хранит его, но не совсем ...

Примечание: это не для назначения.Спасибо.

1 Ответ

0 голосов
/ 25 сентября 2018

Point array_of_points[7]; означает, что вы создали 7 Point объектов в stack area в памяти.Каждый элемент массива является объектом, который содержит два атрибута x и y.Каждый раз, когда вы вызываете метод array_of_points[i].set(x, y);, это означает, что объект i'th вызывает метод set() для назначения new_x и new_y для объекта.

illustration

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...