C ++类函数如何存储私有成员的值并将其写入数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++类函数如何存储私有成员的值并将其写入数组?相关的知识,希望对你有一定的参考价值。

我在图书馆里偶然发现了一本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;
}

我的问题是类Point的void Point :: set函数如何保存数组中变量x和y的值。它让我感到困惑,因为它就像它存储它但不完全......

注意:这不适用于作业。谢谢。

答案

Point array_of_points[7];意味着你在记忆中的Point中创建了7个stack area对象。每个数组元素都是一个包含两个属性xy的对象。每次调用方法array_of_points[i].set(x, y);意味着i'th对象称为set()方法为对象分配new_xnew_y

illustration

以上是关于C ++类函数如何存储私有成员的值并将其写入数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用“this”将对象传递到具有公共函数调用的全局数组中?

如何复制动态分配的对象(具有一个类的 const 成员)

C ++:如何在派生类中定义基类构造函数,如果基构造函数具有带有私有成员的初始化列表[重复]

C++ - 如何从同一个类的静态函数访问一个类的私有成员?

如何实现类的成员函数作为回调函数

C ++通过访问器函数返回私有二维数组